OSDN Git Service

pass test
[pettanr/pettanr.git] / app / models / panel_picture.rb
1 class PanelPicture < ActiveRecord::Base
2   belongs_to :panel
3   belongs_to :resource_picture
4   
5   validates :width, :presence => true, :numericality => true, :not_zero => true
6   validates :height, :presence => true, :numericality => true, :not_zero => true
7   
8   def flip
9     res = (self.height < 0 ? '' : 'v') + (self.width == 0 ? '' : 'h')
10     res += '/' unless res.empty?
11     res
12   end
13   
14   def filename
15     flip + self.resource_picture.filename
16   end
17   
18   def url
19     '/resource_pictures/' + filename
20   end
21   
22   def self.default_page_size
23     25
24   end
25   
26   def self.max_page_size
27     100
28   end
29   
30   def self.page prm = nil
31     page = prm.to_i
32     page = 1 if page < 1
33     page
34   end
35   
36   def self.page_size prm = self.default_page_size
37     page_size = prm.to_i
38     page_size = self.max_page_size if page_size > self.max_page_size
39     page_size = self.default_page_size if page_size < 1
40     page_size
41   end
42   
43   def self.offset cnt, prm = nil
44     offset = prm.to_i
45     offset = cnt - 1 if offset >= cnt
46     offset = cnt - offset.abs if offset < 0
47     offset = 0 if offset < 0
48     offset
49   end
50   
51   def self.list opt = {}, page = 1, page_size = self.default_page_size
52     opt.merge!(self.list_opt) unless opt[:include]
53     opt.merge!({:order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
54     PanelPicture.find(:all, opt)
55   end
56   
57   def self.list_opt
58     {:include => [:panel, {:resource_picture => [:artist, :license]}]}
59   end
60   
61   def self.list_json_opt
62     {:include => {:panel => {}, :resource_picture => [:artist, :license]}}
63   end
64   
65 end