X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fartist.rb;h=bef4215d6791cb489cf97e9198c6a11608dbde75;hb=e6ae2d4d0e9cec1828ef7e4bec617d7f925d8133;hp=33ce5ba68830f2ae94fde7556219c8cc7b0ae9f2;hpb=135599effaad9a0b15ad52e46355e885ec0ddc94;p=pettanr%2Fpettanr.git diff --git a/app/models/artist.rb b/app/models/artist.rb index 33ce5ba6..bef4215d 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -7,6 +7,15 @@ class Artist < ActiveRecord::Base validates :name, :presence => true, :length => {:maximum => 30} validates :author_id, :numericality => {:allow_blank => true} + before_validation :valid_encode + + def valid_encode + ['name'].each do |a| + next if attributes[a] == nil + raise Pettanr::BadRequest unless attributes[a].valid_encoding? + end + end + def supply_default self.name = 'no name' if self.name.blank? end @@ -65,16 +74,20 @@ class Artist < ActiveRecord::Base offset end + def self.list_where + 'artists.author_id is not null' + end + def self.list page = 1, page_size = self.default_page_size - opt = {} - opt.merge!(Artist.list_opt) - opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0 - opt.merge!({:conditions => ['artists.author_id is not null'], :order => 'artists.created_at desc'}) - Artist.find(:all, opt) + Artist.where(self.list_where()).includes(Artist.list_opt).order('artists.created_at desc').offset((page -1) * page_size).limit(page_size) + end + + def self.list_paginate page = 1, page_size = self.default_page_size + Kaminari.paginate_array(Array.new(Artist.where(self.list_where()).count, nil)).page(page).per(page_size) end def self.list_opt - {:include => {:author => {}} } + {:author => {} } end def self.list_json_opt