OSDN Git Service

manifest list mg
[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 tag_attributes column = nil, opt = {}
64     {
65     }
66   end
67   
68   def destroy_with_story
69     res = false
70     Comic.transaction do
71       self.stories.each do |story|
72         raise ActiveRecord::Rollback unless story.destroy_and_shorten
73       end
74       raise ActiveRecord::Rollback unless self.destroy
75       res = true
76     end
77     res
78   end
79   
80   def scenario
81     panels.map {|panel|
82       panel.scenario
83     }.join
84   end
85   
86   def plain_scenario
87     panels.map {|panel|
88       panel.plain_scenario
89     }.join
90   end
91   
92 end