-class Scroll < Pettanr::Item
+class Scroll < Peta::Binder
+ load_manifest
has_many :scroll_panels
belongs_to :author
validates :title, :presence => true, :length => {:maximum => 100}
validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1}
validates :author_id, :presence => true, :numericality => true, :existence => {:both => false}
-
- def self.singular
- 'Scroll'
- end
-
- def self.plural
- 'Scrolls'
- end
-
- def self.owner_type
- :author
- end
def supply_default
self.visible = 0 if self.visible.blank?
self.author_id = operators.author.id
end
- def own? roles
- roles = [roles] unless roles.respond_to?(:each)
- au = Scroll.get_author_from_roles roles
- return false unless au
- self.author_id == au.id
- end
-
def visible? operators
- return false unless super
- self.visible > 0
+ case super
+ when nil # super return
+ return true
+ when false
+ return false
+ else
+ self.visible > 0
+ end
end
def scroll_panels_count
ScrollPanel.where(['scroll_panels.scroll_id = ?', self.id]).count
end
- def self.list_order
+ def self.public_list_order
'scrolls.updated_at desc'
end
{:include => {:scroll_panels => {:include => {:panel => {}}}, :author => {}}}
end
- def self.show sid, operators
- opt = {}
- opt.merge!(Scroll.show_opt)
- res = Scroll.find(sid, opt)
- raise ActiveRecord::Forbidden unless res.visible?(operators)
- res
- end
-
- def self.edit sid, au
- opt = {}
- opt.merge!(Scroll.show_opt)
- res = Scroll.find(sid, opt)
- raise ActiveRecord::Forbidden unless res.own?(au)
- res
- end
-
def self.show_opt
{:include => {:scroll_panels => {:panel => {}}, :author => {}}}
end