繁体   English   中英

结合两个活动记录查询的最佳方法

[英]The best way to combine two active record queries

下面显示的两种方法之间的区别是什么,更好的是:

        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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM