在Rails中获取date.year == some_year的记录

SZH*_*SZH 4 activerecord ruby-on-rails

我在Rails 3.1应用程序的数据库中有一个日期列,我希望能够获取日期与特定年份匹配的记录.我试过where(:date.year == year)但当然得到了NoMethodError: undefined method 'year' for :date:Symbol.是否可以进行此类查询?

Jes*_*ott 6

您可以使用范围来构建类似于:

scope :for_year, lambda {|date| where("date >= ? and date <= ?", "#{date.year}0101", "#{date.year}1231")}
Run Code Online (Sandbox Code Playgroud)

  • 这有效:`范围:for_year,lambda {| year | where("date> =?and date <=?","#{year} -01-01","#{year} -12-31")}` (5认同)
  • 这些答案很棒,但我不知道范围是什么.所以基本上你必须在model.rb文件中定义范围.然后,范围就像一个可以调用的普通方法,除了它专门处理活动记录(数据库)调用.在上面的例子中,你可以调用user.for_year(1991)之类的东西,而1991代表| year |. (2认同)