有沒有一種方法可以將添加劑範圍組合起來?與named_scope的添加劑鏈接
如果我有範圍
User.big_haired
和
User.plays_guitar
我可以叫
User.big_haired.plays_guitar
,並得到所有誰擁有大發彈着吉他的用戶。我可以寫這個來讓所有有大發或彈吉他的用戶?
我想我必須補充一點,我意識到你可以運行一組查詢並將結果添加到一起。這就是我想要做的。
有沒有一種方法可以將添加劑範圍組合起來?與named_scope的添加劑鏈接
如果我有範圍
User.big_haired
和
User.plays_guitar
我可以叫
User.big_haired.plays_guitar
,並得到所有誰擁有大發彈着吉他的用戶。我可以寫這個來讓所有有大發或彈吉他的用戶?
我想我必須補充一點,我意識到你可以運行一組查詢並將結果添加到一起。這就是我想要做的。
所以,你必須:
class User < ActiveRecord::Base
named_scope :big_haired, :conditions => {:hair => 'massive'}
named_scope :plays_guitar, :conditions => {:plays => 'guitar'}
end
User.big_haired.plays_guitar =>很多用戶發現。
我不知道一種方法將兩者混合在一起。也許只是混合陣列:
@users = (User.big_haired + User.plays_guitar).uniq
我剛剛在我的一些模型上對named_scopes進行了定義。如果將它結合起來,它將把條件放在一起作爲AND條件。所以......
User.big_haired.plays_guitar
將導致(顯然,我的速記SQL,並不是真正的軌道產生的東西)
SELECT * FROM users WHERE hair = 'massive' AND plays = 'guitar'
我不知道的方式將它們組合爲OR關係。當你考慮各種選擇時,混合起來會非常複雜。我們始終鏈接named_scopes,它運行良好(只要您希望將它們ANDed在一起)。
要做到和情況下,我想無論是創建建立在OR條件特殊的命名範圍,或使用聯合制作了一套獨特的,像這樣:最近
User.big_haired | User.plays_guitar
嘗試Searchlogic,它supports combining named scopes with OR