1 class Comic < ActiveRecord::Base
2 has_many :panels, :dependent => :destroy
5 class NotZeroValidator < ActiveModel::EachValidator
\r
6 def validate_each(record, attribute, value)
\r
7 record.errors[attribute] << (options[:message] || "is zero") if value == 0
\r
11 validates :title, :presence => true, :length => {:maximum => 100}
\r
12 validates :width, :presence => true, :numericality => true, :not_zero => true
13 validates :height, :presence => true, :numericality => true, :not_zero => true
14 validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0...4}
15 validates :editable, :presence => true, :numericality => true, :inclusion => {:in => 0...4}
22 self.visible = 0 if self.visible.blank?
23 self.editable= 0 if self.editable.blank?
27 return false unless author
28 self.author_id == author.id
32 editable == 1 ? 'O' : 'X'
36 visible == 1 ? 'O' : 'X'
39 def self.default_page_size
43 def self.max_page_size
47 def self.list opt = {}, page = 1, page_size = self.default_page_size
48 page_size = self.max_page_size if page_size > self.max_page_size
49 page_size = self.default_page_size if page_size < 1
51 opt.merge!(self.list_opt) unless opt[:include]
52 opt.merge!({:conditions => ['visible = 1'], :order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size})
60 def self.list_json_opt
64 def self.show cid, opt = {}
65 opt.merge!(self.show_opt) unless opt[:include]
73 def self.show_json_opt