Rails 4范围:获取相反范围之间的所有记录

时间:2016-03-08 14:30:54

标签: ruby-on-rails ruby activerecord

我有以下型号:

#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关系对象包含BOTH活动和非活动foobar记录?更好的是:有没有办法创建一个可以为我做这个的范围?

1 个答案:

答案 0 :(得分:2)

您可以使用此代码:

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

通过使用Array,您可以为属性传递多个值。