活动记录查询的类方法

dan*_*iel 1 ruby activerecord ruby-on-rails ruby-on-rails-3

鉴于我有一个带约会的模型/表,保存为日期.我想创建一个只返回活动记录的方法.一个用于所有记录,一个用于对象.我的方法是可以改进/可组合的吗?感谢建议!

def self.actives
  where("start_time >= ?", Date.today)
end

def is_active
  where("start_time >= ?", Date.today)
end
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 5

范围是处理第一个过滤器的正确方法.请参阅doc:http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

您的第二个过滤器将无法使用,请替换为:

def is_active?
  start_time >= Date.today
end
Run Code Online (Sandbox Code Playgroud)

我不明白你为什么要结合这两种方法.

意识到:

  • Model.actives将为您提供ActiveRecord关系.您必须附加.all才能触发呼叫.然后你将有一个迭代的数组.

  • instance.is_active?将提供一个布尔值