OSDN Git Service

t#29312:any update
[pettanr/pettanr.git] / app / models / color.rb
diff --git a/app/models/color.rb b/app/models/color.rb
new file mode 100644 (file)
index 0000000..d09ae2c
--- /dev/null
@@ -0,0 +1,61 @@
+class Color < ActiveRecord::Base
+  belongs_to :ground_color
+
+  validates :name, :presence => true, :length => {:maximum => 50}, :uniqueness => true
+  validates :code, :presence => true, :numericality => {:greater_than_or_equal_to => 0, :less_than => 0x1000000}
+  validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
+  
+  def self.import filename
+    Color.import_file(filename) {|name, attr| Color.store(name, attr)}
+  end
+  
+  def self.store name, attr
+    r = Color.modify_object name, attr
+    r.save
+    r
+  end
+  
+  def self.default_page_size
+    25
+  end
+  
+  def self.max_page_size
+    100
+  end
+  
+  def self.default_panel_size
+    30
+  end
+  
+  def self.page prm = nil
+    page = prm.to_i
+    page = 1 if page < 1
+    page
+  end
+  
+  def self.page_size prm = self.default_page_size
+    page_size = prm.to_i
+    page_size = self.max_page_size if page_size > self.max_page_size
+    page_size = self.default_page_size if page_size < 1
+    page_size
+  end
+  
+  def self.list opt = {}, page = 1, page_size = self.default_page_size
+    opt.merge!({:order => 'colors.t', :limit => page_size, :offset => (page -1) * page_size})
+    Color.find(:all, opt)
+  end
+  
+  def self.list_opt
+    {:include => {:ground_color => {:panel => {:author => {}}} }}
+  end
+  
+  def self.list_json_opt
+    {:include => {:ground_color => {:panel => {:author => {}}} }}
+  end
+  
+  def self.show cid
+    c = Color.find(cid)
+    c
+  end
+  
+end