OSDN Git Service

client is version0.4.35, added pettanr.comicReader.
[pettanr/pettanr.git] / app / models / author.rb
1 class Author < ActiveRecord::Base
2   has_one :artist
3   belongs_to :user
4   
5   validates :name, :length => {:maximum => 30}
6   
7   before_save do |r|
8     r.name = 'no name' if r.name.blank?
9   end
10   
11   def artist?
12     Artist.find_by_author(self) != nil
13   end
14   
15   def step2 n
16     self.name = n
17     self.save
18   end
19   
20   def self.default_page_size
21     25
22   end
23   
24   def self.max_page_size
25     100
26   end
27   
28   def self.default_panel_size
29     30
30   end
31   
32   def self.max_panel_size
33     200
34   end
35   
36   def self.page prm = nil
37     page = prm.to_i
38     page = 1 if page < 1
39     page
40   end
41   
42   def self.page_size prm = self.default_page_size
43     page_size = prm.to_i
44     page_size = self.max_page_size if page_size > self.max_page_size
45     page_size = self.default_page_size if page_size < 1
46     page_size
47   end
48   
49   def self.offset cnt, prm = nil
50     offset = prm.to_i
51     offset = cnt - 1 if offset >= cnt
52     offset = cnt - offset.abs if offset < 0
53     offset = 0 if offset < 0
54     offset
55   end
56   
57   def self.list opt = {}, page = 1, page_size = self.default_page_size
58     opt.merge!(self.list_opt) unless opt[:include]
59     opt.merge!({:order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
60     Author.find(:all, opt)
61   end
62   
63   def self.list_opt
64     {:include => :artist}
65   end
66   
67   def self.list_json_opt
68     {:include => :artist}
69   end
70   
71   def self.show aid, opt = {}
72     a = Author.find(aid, :include => self.show_include_opt(opt))
73 #    raise ActiveRecord::Forbidden unless c.visible?(au)
74     a
75   end
76   
77   def self.show_include_opt opt = {}
78     res = [:artist]
79     res.push(opt[:include]) if opt[:include]
80     res
81   end
82   
83   def self.show_json_include_opt
84     {:include => :artist}
85   end
86   
87   def self.visible_count
88     Author.count
89   end
90   
91 end