如下兩種方法之間有什麼區別,什麼是更好的:組合兩個活動記錄的最好辦法查詢
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 Model
scope :public, where {:public => true }
scope :user, lambda { |user| where("user_id = ?", user) }
# Controller
Photo.public.user(user)
鑑於照片#公衆是一個範圍,前:
scope :public, -> { where(:public => true) }
你可以簡單地寫
user.photos.public
由於某種原因,我不能這樣做?我只能分別做兩個查詢,不在一個範圍內 – chumakoff
@AntonChumakov是照片的一個關聯嗎? –
由於某種原因,我不能這樣做?我只能分別做兩個查詢,不在一個範圍內 – chumakoff
它不是一個範圍,它是一個鏈中的兩個範圍 - 這是一個很常見的用法,發佈你的模型,也許我們可以找出爲什麼這不適合你。 – Matt