2016-03-08 75 views
1

我有以下型號:軌道4的範圍:搶相反範圍之間的所有記錄

#models/foobar.rb 
class Foobar < ActiveRecord::base 
    scope :active, ->{where(active: true)} 
    scope :inactive, ->{where(active: false)} 
end 

我想要做的就是一個包含所有foobar記錄是活躍的一個ActiveRecord關係對象。然後:我也希望這個相同的activerecord關係對象包含所有不活動的foobar記錄。

我不認爲這做什麼,我希望它:

# only returns the active records 
Foobar.active.inactive 

這是行不通的可能是因爲它返回一個數組,而不是一個ActiveRecord關係對象:

# returns an array not an activerecord relation object 
Foobar.active + Foobar.inactive 

如何我可以得到activerecord關係對象來包含兩個活動和不活動foobar記錄?更好的是:有沒有辦法創建一個可以爲我做這個的範圍?

回答

2

您可以使用此代碼:

scope :active_and_inactive, ->{where(active: [true,false])} 

通過使用陣列可以通過多個值的屬性。

+0

此代碼是否可用? –

+0

它的工作,謝謝! – Neil

+0

我使用status來代替活動的布爾值,範圍如下所示: 'scope:active, - > {where(status:「Active」)}'' –