OSDN Git Service

temp
[pettanr/pettanr.git] / app / models / scroll.rb
1 class Scroll < Pettanr::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 self.visible_count
56     Scroll.count 'visible > 0'
57   end
58   
59   def destroy_with_scroll_panel
60     res = false
61     Scroll.transaction do
62       self.scroll_panels.each do |scroll_panel|
63         raise ActiveRecord::Rollback unless scroll_panel.destroy
64       end
65       raise ActiveRecord::Rollback unless self.destroy
66       res = true
67     end
68     res
69   end
70   
71   def scenario
72     panels.map {|panel|
73       panel.scenario
74     }.join
75   end
76   
77   def plain_scenario
78     panels.map {|panel|
79       panel.plain_scenario
80     }.join
81   end
82   
83 end