下面显示的两种方法之间有什么区别以及更好的方法:
user.photos & Photo.public
和
user.photos.where('photos.id IN (?)', Photo.public.select(:id))
有没有更好的方法来组合两个活动记录查询?
下面显示的两种方法之间有什么区别以及更好的方法:
user.photos & Photo.public
和
user.photos.where('photos.id IN (?)', Photo.public.select(:id))
有没有更好的方法来组合两个活动记录查询?
第一个将使用数组连接,第二个是执行两个查询,都没有向 Photo 模型添加另一个范围有效:
# Photo Model
scope :public, where {:public => true }
scope :user, lambda { |user| where("user_id = ?", user) }
# Controller
Photo.public.user(user)
鉴于 Photo#public 是一个范围,例如:
scope :public, -> { where(:public => true) }
你可以简单地写
user.photos.public
如果您不能使用新范围,我建议您:
user.photos.merge(Photo.public)