OSDN Git Service

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