簡體   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