活动记录查询的类方法

时间:2011-07-27 10:52:43

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

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

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

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

1 个答案:

答案 0 :(得分:5)

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

您的第二个过滤器无效,请替换为:

def is_active?
  start_time >= Date.today
end

我看不出你为什么想要结合这两种方法。

请注意:

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

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