OSDN Git Service

fix form
[pettanr/pettanr.git] / app / models / scroll.rb
1 class Scroll < Peta::Content
2   has_many :scroll_panels
3   belongs_to :author
4   
5   validates :title, :presence => true, :length => {:maximum => 100}
6   validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1}
7   validates :author_id, :presence => true, :numericality => true, :existence => {:both => false}
8
9   def self.valid_encode_columns
10     super + ['title']
11   end
12   
13   def supply_default
14     self.visible = 0 if self.visible.blank?
15   end
16   
17   def overwrite operators
18     return false unless operators.author
19     self.author_id = operators.author.id
20   end
21   
22   def visible? operators
23     return false unless super
24     self.visible > 0
25   end
26   
27   def scroll_panels_count
28     ScrollPanel.where(['scroll_panels.scroll_id = ?', self.id]).count
29   end
30   
31   def self.list_order
32     'scrolls.updated_at desc'
33   end
34   
35   def self.list_where
36     'scrolls.visible > 0'
37   end
38   
39   def self.list_opt
40     {:scroll_panels => {:panel => {}}, :author => {} }
41   end
42   
43   def self.list_json_opt
44     {:include => {:scroll_panels => {:include => {:panel => {}}}, :author => {}}}
45   end
46   
47   def self.show_opt
48     {:include => {:scroll_panels => {:panel => {}}, :author => {}}}
49   end
50   
51   def self.show_json_opt
52     {:include => {:scroll_panels => {:include => {:panel => {}}}, :author => {}}}
53   end
54   
55   def tag_attributes column = nil, opt = {}
56     {
57     }
58   end
59   
60   def self.visible_count
61     Scroll.count 'visible > 0'
62   end
63   
64   def destroy_with_scroll_panel
65     res = false
66     Scroll.transaction do
67       self.scroll_panels.each do |scroll_panel|
68         raise ActiveRecord::Rollback unless scroll_panel.destroy
69       end
70       raise ActiveRecord::Rollback unless self.destroy
71       res = true
72     end
73     res
74   end
75   
76   def scenario
77     panels.map {|panel|
78       panel.scenario
79     }.join
80   end
81   
82   def plain_scenario
83     panels.map {|panel|
84       panel.plain_scenario
85     }.join
86   end
87   
88 end