ActiveRecord查询FALSE属性

时间:2012-10-03 22:11:40

标签: ruby-on-rails activerecord boolean

我不确定正确的术语是什么,所以我的谷歌搜索没有多大帮助。

但无论如何,ActiveRecord允许你使用类似这样的布尔属性TRUE搜索所有记录:

@current_events = Event.current

因此返回属性“current”等于TRUE的所有事件。

是否有一个漂亮的ActiveRecord方法来返回所有FALSE?也许是这样的:

@outdated_events = Event.not_current

如果没有,那么我可以使用“where”方法。但我只是好奇。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能会误将ActiveRecord的“命名范围”类方法误认为是Rails功能。例如,

class Foo < ActiveRecord::Base
  def self.current
    where current: true
  end
end

会创建您描述的行为,但不会在没有上述内容的情况下调用Foo.current。因此,要创建not_current,请使用where

def self.not_current
  where current: false
end