将Ruby类绑定到时间范围

时间:2012-03-06 20:14:09

标签: ruby-on-rails ruby date activerecord

我有一个带有每周发生模型的rails应用程序。换句话说,每个用户都有一个模型实例(假设它是GroceryList),在周一早上每周生成一次。我想将一些语法糖集成到我的GroceryList模型中,以便我可以使用ruby-esque语法轻松引用过去的列表,如下所示:

current_user.grocery_list.1.week.ago

目前,每个GroceryList项目都有一个created_on日期,以及一个start_date,它表示一周的开始(星期一)。

是否有一种既定的方法将这种类型的功能绑定到ruby类中,如果有的话,如何实现它?

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用命名范围很容易添加这种东西:

class GroceryList < ActiveRecord::Base
  scope :from, lambda { |date|
    where(:created_on => date.to_date)
  }
end

然后你可以使用简单的东西来获取任何关系:

current_user.grocery_list.from(1.week.ago)