OSDN Git Service

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