问题
class Product < ActiveRecord::Base
has_many: images , conditions: { size: 'small' }
end
现在,我希望在没有product.images
的情况下访问condition
。反正呢?我认为这是非常普遍的事情,所以可能类似unscoped
类型的方法。
我知道我可以做类似下面的事情。
def all_images
Image.where(product_id: self.id)
end
对于包含conditions
范围的所有此类类方法,在所有模型中创建此类类型的方法是不可行的。当我想在管理面板中显示时,我通常会调用无条件的方法。
答案 0 :(得分:1)
据我所知,你不能轻易做到。并且有充分的理由,如果你需要&#34;所有&#34;关于收集的项目,为什么要首先添加条件?
如果您只想加载某些集合成员,那么他们的方法就是定义其他关联。
class Product < ActiveRecord::Base
# has_many :small_images, -> { where size: 'small' }, class: 'Image' # <= Rails 4
has_many :small_images , conditions: { size: 'small' }, class: 'Image'
has_many :images
end
我认为现在也更清楚了,您为所有图片调用product.images
,为小图调用product.small_images
。
答案 1 :(得分:0)
您可以使用unscoped
方法:
product.images.unscoped
但请注意,这将从关联代理中删除所有范围,以及默认的模型范围。