#実素材
-class Picture < ActiveRecord::Base
+class Picture < Peta::Content
belongs_to :original_picture
belongs_to :license
belongs_to :artist
validates :artist_name, :presence => true
validates :classname, :presence => true, :length => {:maximum => 50}
- before_validation :valid_encode
+ def self.owner_type
+ :artist
+ end
- def valid_encode
- ['artist_name', 'classname', 'credit', 'settings'].each do |a|
- next if attributes[a] == nil
- raise Pettanr::BadRequest unless attributes[a].valid_encoding?
- end
+ def self.valid_encode_columns
+ super + ['artist_name', 'classname', 'credit', 'settings']
end
def supply_default
self.revision = self.new_revision #Do not move to attr. new_revision reffernces self.original_picture_id
end
- def own? roles
- roles = [roles] unless roles.respond_to?(:each)
- ar = Picture.get_artist_from_roles roles
- return false unless ar
- self.artist_id == ar.id
- end
-
- def visible? ar
+ def visible? operators
return true
end
- def showable? au = nil
+ def showable? operators = nil
return false unless self.original_picture
- return true if self.own?(au)
+ return true if self.own?(operators)
self.enable? and self.head?
end
Picture.list_by_md5(md5, opid).empty? ? false : true
end
- def self.show rid, roles
- opt = {}
- r = Picture.find(rid, opt)
- raise ActiveRecord::Forbidden unless r.visible?(roles)
- r
+ def self.list_by_original_picture_where original_picture_id
+ ['pictures.original_picture_id = ?', original_picture_id]
+ end
+
+ def self.list_by_original_picture original_picture_id, roles, page = 1, page_size = self.default_page_size
+ self.where(self.list_by_original_picture_where(original_picture_id)).includes(self.list_opt).order('pictures.revision desc').offset((page -1) * page_size).limit(page_size)
+ end
+
+ def self.list_opt
+ {:license => {}, :artist => {}}
+ end
+
+ def self.list_json_opt
+ {:include => {:license => {}, :artist => {}} }
end
def store(imager)