OSDN Git Service

0fe9667633765b86fe0912b55e11a246c8262851
[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   before_save do |r|
9     r.supply_default
10   end
11   
12   def supply_default
13   end
14   
15   def self.find_by_author author
16     Artist.find( :first, :conditions => ['author_id = ?', author.id])
17   end
18   
19   def self.default_page_size
20     25
21   end
22   
23   def self.max_page_size
24     100
25   end
26   
27   def self.default_panel_size
28     30
29   end
30   
31   def self.max_panel_size
32     200
33   end
34   
35   def self.page prm = nil
36     page = prm.to_i
37     page = 1 if page < 1
38     page
39   end
40   
41   def self.page_size prm = self.default_page_size
42     page_size = prm.to_i
43     page_size = self.max_page_size if page_size > self.max_page_size
44     page_size = self.default_page_size if page_size < 1
45     page_size
46   end
47   
48   def self.offset cnt, prm = nil
49     offset = prm.to_i
50     offset = cnt - 1 if offset >= cnt
51     offset = cnt - offset.abs if offset < 0
52     offset = 0 if offset < 0
53     offset
54   end
55   
56   def self.list opt = {}, page = 1, page_size = self.default_page_size
57     opt.merge!(self.list_opt) unless opt[:include]
58     opt.merge!({:order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
59     Artist.find(:all, opt)
60   end
61   
62   def self.list_opt
63     {:include => :author}
64   end
65   
66   def self.list_json_opt
67     {:include => :author}
68   end
69   
70   def self.show aid, opt = {}
71     a = Artist.find(aid, :include => self.show_include_opt(opt))
72 #    raise ActiveRecord::Forbidden unless c.visible?(au)
73     a
74   end
75   
76   def self.show_include_opt opt = {}
77     res = [:author]
78     res.push(opt[:include]) if opt[:include]
79     res
80   end
81   
82   def self.show_json_include_opt
83     {:include => :author}
84   end
85   
86   def self.visible_count
87     Artist.count
88   end
89   
90 end