OSDN Git Service

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