OSDN Git Service

fix: any
[pettanr/pettanr.git] / app / models / picture.rb
index 39645a7..d147a1f 100644 (file)
@@ -20,6 +20,26 @@ class Picture < Peta::Content
   validates :artist_id, :presence => true, :numericality => true, :existence => {:both => false}
   validates :license_group_module_name, :presence => true, :length => {:maximum => 50}
   
+  scope :find_index, -> do
+    self
+  end
+  
+  scope :find_by_artist, -> (artist_id) do 
+    find_index.where(artist_id: artist_id)
+  end
+  
+  scope :find_by_md5, -> (md5) do 
+    find_index.where(md5: md5).order(updated_at: :desc)
+  end
+  
+  scope :find_by_md5_without_original_picture, -> (md5, original_picture_id) do 
+    self.find_by_md5(md5).where.not(original_picture_id: original_picture_id).order(updated_at: :desc)
+  end
+  
+  scope :find_by_original_picture, -> (original_picture_id) do 
+    find_index.where(original_picture_id: original_picture_id)
+  end
+  
   def supply_default
   end
   
@@ -90,7 +110,7 @@ class Picture < Peta::Content
   end
   
   def new_revision
-    Picture.maximum(:revision, :conditions => ['original_picture_id = ?', self.original_picture_id]).to_i + 1
+    Picture.where(original_picture_id: self.original_picture_id).maximum(:revision).to_i + 1
   end
   
   def enable?
@@ -99,7 +119,7 @@ class Picture < Peta::Content
   end
   
   def self.head opid
-    Picture.find(:first, :conditions => ['original_picture_id = ?', opid], :order => 'pictures.revision desc')
+    Picture.where(original_picture_id: opid).order('pictures.revision desc').first
   end
   
   def head
@@ -118,21 +138,8 @@ class Picture < Peta::Content
     self.license_extend.reverse < 0 ? [''] : ['', 'v', 'h', 'vh']
   end
   
-  def self.find_by_md5 md5
-    r = Picture.find :all, :conditions => ['pictures.md5 = ?', md5], :order => 'pictures.updated_at desc'
-  end
-  
-  def self.list_by_md5 md5, opid = nil
-    cond = if opid.blank?
-      ['pictures.md5 = ?', md5]
-    else
-      ['pictures.md5 = ? and pictures.original_picture_id <> ?', md5, opid]
-    end
-    r = Picture.find :all, :conditions => cond, :order => 'pictures.updated_at desc'
-  end
-  
   def self.exist_by_md5 md5, opid
-    Picture.list_by_md5(md5, opid).empty? ? false : true
+    Picture.find_by_md5(md5, opid).empty? ? false : true
   end
   
   def self.list_by_original_picture_where original_picture_id
@@ -182,15 +189,9 @@ class Picture < Peta::Content
   end
   
   def self.export(dt = nil)
-    opt = {}
-    cond = if dt
-      ['artists.author_id is not null and pictures.updated_at >= ?', dt]
-    else
-      'artists.author_id is not null'
-    end
-    opt.merge!({:conditions => cond}) 
-    opt.merge!({:include => {:artist => {}}, :order => 'pictures.updated_at desc'})
-    Picture.find(:all, opt)
+    pictures = Picture.includes(:artist).where('artists.author_id is not null')
+    pictures = pictures.where(['pictures.updated_at >= ?', dt]) if dt
+    pictures.order('pictures.updated_at desc').references(:artist)
   end
   
   def self.list_as_json_text ary