OSDN Git Service

t30350#:fix destroy
[pettanr/pettanr.git] / app / models / author.rb
1 class Author < ActiveRecord::Base
2   has_one :artist
3   belongs_to :user
4   has_many :comic
5   has_many :panel
6   
7   validates :name, :presence => true, :length => {:maximum => 30}
8   validates :user_id, :numericality => true, :existence => {:both => false}
9   
10   def supply_default
11     self.name = 'no name' if self.name.blank?
12   end
13   
14   def overwrite uid
15     self.user_id = uid
16   end
17   
18   def own? au
19     return false unless au.is_a?(Author)
20     self.id == au.id
21   end
22   
23   def visible? au
24     if au == nil
25       return false if MagicNumber['run_mode'] == 1
26     elsif au.is_a?(Author)
27       return true
28     else
29       return false
30     end
31     true
32   end
33   
34   def artist?
35     Artist.find_by_author(self) != nil
36   end
37   
38   def step2 n
39     self.name = n
40     self.save
41   end
42   
43   def self.default_page_size
44     25
45   end
46   
47   def self.max_page_size
48     100
49   end
50   
51   def self.page prm = nil
52     page = prm.to_i
53     page = 1 if page < 1
54     page
55   end
56   
57   def self.page_size prm = self.default_page_size
58     page_size = prm.to_i
59     page_size = self.max_page_size if page_size > self.max_page_size
60     page_size = self.default_page_size if page_size < 1
61     page_size
62   end
63   
64   def self.list page = 1, page_size = self.default_page_size
65     opt = {}
66     opt.merge!(Author.list_opt)
67     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
68     opt.merge!({:order => 'created_at desc'})
69     Author.find(:all, opt)
70   end
71   
72   def self.list_opt
73     {:include => {:artist => {}} }
74   end
75   
76   def self.list_json_opt
77     {:include => {:artist => {}} }
78   end
79   
80   def self.show aid, au
81     opt = {}
82     opt.merge!(Author.show_opt)
83     res = Author.find(aid, opt)
84     raise ActiveRecord::Forbidden unless res.visible?(au)
85     res
86   end
87   
88   def self.show_opt
89     {:include => {:artist => {}} }
90   end
91   
92   def self.show_json_opt
93     {:include => {:artist => {}} }
94   end
95   
96   def self.edit aid, au
97     opt = {}
98     opt.merge!(Author.show_opt)
99     res = Author.find aid, opt
100     raise ActiveRecord::Forbidden unless res.own?(au)
101     res
102   end
103   
104   def self.default_comic_page_size
105     25
106   end
107   
108   def self.comic_max_page_size
109     100
110   end
111   
112   def self.comic_page_size prm = self.default_comic_page_size
113     page_size = prm.to_i
114     page_size = self.comic_max_page_size if page_size > self.comic_max_page_size
115     page_size = self.default_comic_page_size if page_size < 1
116     page_size
117   end
118   
119   def self.default_story_page_size
120     25
121   end
122   
123   def self.story_max_page_size
124     100
125   end
126   
127   def self.story_page_size prm = self.default_story_page_size
128     page_size = prm.to_i
129     page_size = self.story_max_page_size if page_size > self.story_max_page_size
130     page_size = self.default_story_page_size if page_size < 1
131     page_size
132   end
133   
134   def self.default_panel_page_size
135     25
136   end
137   
138   def self.panel_max_page_size
139     100
140   end
141   
142   def self.panel_page_size prm = self.default_panel_page_size
143     page_size = prm.to_i
144     page_size = self.panel_max_page_size if page_size > self.panel_max_page_size
145     page_size = self.default_panel_page_size if page_size < 1
146     page_size
147   end
148   
149   def self.default_panel_picture_page_size
150     25
151   end
152   
153   def self.panel_picture_max_page_size
154     100
155   end
156   
157   def self.panel_picture_page_size prm = self.default_panel_picture_page_size
158     page_size = prm.to_i
159     page_size = self.panel_picture_max_page_size if page_size > self.panel_picture_max_page_size
160     page_size = self.default_panel_picture_page_size if page_size < 1
161     page_size
162   end
163   
164   def self.default_ground_picture_page_size
165     25
166   end
167   
168   def self.ground_picture_max_page_size
169     100
170   end
171   
172   def self.ground_picture_page_size prm = self.default_ground_picture_page_size
173     page_size = prm.to_i
174     page_size = self.ground_picture_max_page_size if page_size > self.ground_picture_max_page_size
175     page_size = self.default_ground_picture_page_size if page_size < 1
176     page_size
177   end
178   
179   def self.default_ground_color_page_size
180     25
181   end
182   
183   def self.ground_color_max_page_size
184     100
185   end
186   
187   def self.ground_color_page_size prm = self.default_ground_color_page_size
188     page_size = prm.to_i
189     page_size = self.ground_color_max_page_size if page_size > self.ground_color_max_page_size
190     page_size = self.default_ground_color_page_size if page_size < 1
191     page_size
192   end
193   
194   def self.default_panel_color_page_size
195     25
196   end
197   
198   def self.panel_color_max_page_size
199     100
200   end
201   
202   def self.panel_color_page_size prm = self.default_panel_color_page_size
203     page_size = prm.to_i
204     page_size = self.panel_color_max_page_size if page_size > self.panel_color_max_page_size
205     page_size = self.default_panel_color_page_size if page_size < 1
206     page_size
207   end
208   
209   def self.visible_count
210     Author.count
211   end
212   
213 end