1 class GroundColor < ActiveRecord::Base
5 validates :panel_id, :numericality => {:allow_blank => true}
6 validates :color_id, :numericality => true, :existence => true
7 validates :z, :presence => true, :numericality => {:greater_than => 0}
9 def self.default_page_size
13 def self.max_page_size
17 def self.page prm = nil
23 def self.page_size prm = self.default_page_size
25 page_size = self.max_page_size if page_size > self.max_page_size
26 page_size = self.default_page_size if page_size < 1
30 def self.offset cnt, prm = nil
32 offset = cnt - 1 if offset >= cnt
33 offset = cnt - offset.abs if offset < 0
34 offset = 0 if offset < 0
38 def self.list opt = {}, page = 1, page_size = self.default_page_size
39 opt.merge!(self.list_opt) unless opt[:include]
40 opt.merge!({:conditions => 'panels.publish > 0', :order => 'ground_colors.updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
41 GroundColor.find(:all, opt)
45 {:include => {:panel => {:author => {}}, :color => {} }}
48 def self.list_json_opt
49 {:include => {:panel => {:author => {}}, :color => {} }}
52 def self.mylist au, opt = {}, page = 1, ground_color_page_size = Author.default_ground_color_page_size
53 opt.merge!(self.list_opt) unless opt[:include]
54 opt.merge!({:conditions => ['panels.author_id = ?', au.id], :order => 'ground_colors.updated_at desc', :limit => page_size, :offset => (page -1) * ground_color_page_size})
55 GroundColor.find(:all, opt)