Ruby on rails 如何查找记录并创建查询范围

Ruby on rails 如何查找记录并创建查询范围,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有两个模型 艺术家 class Artist < ActiveRecord::Base has_many :photos, :as => :photoable, :dependent => :destroy def is_approved? self.admin_approve == true end end class-Artist:photoable,:dependent=>:destroy def是否获得批准? self.admin_ap

我有两个模型

艺术家

class Artist < ActiveRecord::Base
   has_many :photos, :as => :photoable, :dependent => :destroy

   def is_approved?
     self.admin_approve == true
   end
end
class-Artist:photoable,:dependent=>:destroy
def是否获得批准?
self.admin_approve==true
结束
结束
照片

  class Photo < ActiveRecord::Base
    belongs_to :photoable, :polymorphic => true
  end
class-Phototrue
结束
我想找到(艺术家照片)管理员批准的照片是真的。如何编写该查询和范围

提前感谢

您可以添加范围

class Artist < ActiveRecord::Base
   has_many :photos, :as => :photoable, :dependent => :destroy

   scope :approved, where(:admin_approve => true)

   def is_approved?
     self.admin_approve == true
   end
end

@伊多,谢谢你,但我是按照这个方法做的

class Photo < ActiveRecord::Base
  belongs_to :photoable, :polymorphic => true
    ...
  scope :approve_artists_photo, joins("Inner Join artists on artists.id = photos.photoable_id AND photos.photoable_type = 'Artist'").where("artists.admin_approved = 1")
end
class-Phototrue
...
范围:批准艺术家照片,加入(“艺术家上的内部加入艺术家。id=photos.photoable_id和photos.photoable_type=‘艺术家’”)。其中(“艺术家。管理_批准=1”)
结束

我喜欢宝石。它允许轻松处理多态联接:
Note.joins{signed(Person.articles}
。在您的情况下,它将是:
加入{photoable(Artist)}。其中{artists.admin_approve==true}
。试试看。@jdoe非常感谢您,它正在工作
class Photo < ActiveRecord::Base
  belongs_to :photoable, :polymorphic => true
    ...
  scope :approve_artists_photo, joins("Inner Join artists on artists.id = photos.photoable_id AND photos.photoable_type = 'Artist'").where("artists.admin_approved = 1")
end