X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fauthor.rb;h=d574bae9522a9d25b24bc7d649772ba801ce8da3;hb=9618822ebe6f87ffde3376b0ab88c0be36880659;hp=a6db5c2fc714cd81769530d051bc4de2849cbf59;hpb=e3ed5d83fcbd2d94ea1f1d0af6d5b6a278bb201c;p=pettanr%2Fpettanr.git diff --git a/app/models/author.rb b/app/models/author.rb index a6db5c2f..d574bae9 100644 --- a/app/models/author.rb +++ b/app/models/author.rb @@ -1,11 +1,34 @@ class Author < ActiveRecord::Base has_one :artist belongs_to :user + has_many :comic + has_many :panel - validates :name, :length => {:maximum => 30} + validates :name, :presence => true, :length => {:maximum => 30} + validates :user_id, :numericality => true, :existence => {:both => false} - before_save do |r| - r.name = 'no name' if r.name.blank? + def supply_default + self.name = 'no name' if self.name.blank? + end + + def overwrite uid + self.user_id = uid + end + + def own? au + return false unless au.is_a?(Author) + self.id == au.id + end + + def visible? au + if au == nil + return false if MagicNumber['run_mode'] == 1 + elsif au.is_a?(Author) + return true + else + return false + end + true end def artist? @@ -38,26 +61,52 @@ class Author < ActiveRecord::Base page_size end - def self.list opt = {}, page = 1, page_size = self.default_page_size - opt.merge!(self.list_opt) unless opt[:include] - opt.merge!({:order => 'updated_at desc', :limit => page_size, :offset => (page -1) * page_size}) + def self.list page = 1, page_size = self.default_page_size + opt = {} + opt.merge!(Author.list_opt) + opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0 + opt.merge!({:order => 'created_at desc'}) Author.find(:all, opt) end def self.list_opt - {:include => :artist} + {:include => {:artist => {}} } end def self.list_json_opt - {:include => :artist} + {:include => {:artist => {}} } + end + + def self.show aid, au + opt = {} + opt.merge!(Author.show_opt) + res = Author.find(aid, opt) + raise ActiveRecord::Forbidden unless res.visible?(au) + res + end + + def self.show_opt + {:include => {:artist => {}} } + end + + def self.show_json_opt + {:include => {:artist => {}} } + end + + def self.edit aid, au + opt = {} + opt.merge!(Author.show_opt) + res = Author.find aid, opt + raise ActiveRecord::Forbidden unless res.own?(au) + res end def self.default_comic_page_size - 30 + 25 end def self.comic_max_page_size - 200 + 100 end def self.comic_page_size prm = self.default_comic_page_size @@ -68,11 +117,11 @@ class Author < ActiveRecord::Base end def self.default_story_page_size - 30 + 25 end def self.story_max_page_size - 200 + 100 end def self.story_page_size prm = self.default_story_page_size @@ -83,11 +132,11 @@ class Author < ActiveRecord::Base end def self.default_panel_page_size - 30 + 25 end def self.panel_max_page_size - 200 + 100 end def self.panel_page_size prm = self.default_panel_page_size @@ -98,11 +147,11 @@ class Author < ActiveRecord::Base end def self.default_panel_picture_page_size - 30 + 25 end def self.panel_picture_max_page_size - 200 + 100 end def self.panel_picture_page_size prm = self.default_panel_picture_page_size @@ -113,11 +162,11 @@ class Author < ActiveRecord::Base end def self.default_ground_picture_page_size - 30 + 25 end def self.ground_picture_max_page_size - 200 + 100 end def self.ground_picture_page_size prm = self.default_ground_picture_page_size @@ -128,11 +177,11 @@ class Author < ActiveRecord::Base end def self.default_ground_color_page_size - 30 + 25 end def self.ground_color_max_page_size - 200 + 100 end def self.ground_color_page_size prm = self.default_ground_color_page_size @@ -143,11 +192,11 @@ class Author < ActiveRecord::Base end def self.default_panel_color_page_size - 30 + 25 end def self.panel_color_max_page_size - 200 + 100 end def self.panel_color_page_size prm = self.default_panel_color_page_size @@ -157,22 +206,6 @@ class Author < ActiveRecord::Base page_size end - def self.show aid, opt = {} - a = Author.find(aid, :include => self.show_include_opt(opt)) -# raise ActiveRecord::Forbidden unless c.visible?(au) - a - end - - def self.show_include_opt opt = {} - res = [:artist] - res.push(opt[:include]) if opt[:include] - res - end - - def self.show_json_include_opt - {:include => :artist} - end - def self.visible_count Author.count end