在一年中按周查找ActiveRecord对象

时间:2012-10-06 21:01:02

标签: mysql ruby-on-rails ruby sqlite activerecord

我的报告中有日期。现在我想在一年中的某一周找到所有报告。我有这个:

class Model < ActiveRecord::Base
  attr_accessible :date

  def self.find_by_week(week, year)
    Model.all.find_all do |model|
      model.date.year == year and model.date.s­trftime("%­W").to_i == week
    end
  end  
end

但是,当软件累积了数千份预期的报告时,我担心这个解决方案可能效率不高。有更好的解决方案吗?

如果重要,我在开发中使用SQLite3,但生产数据库将是MySQL。虽然我想要一个独立于数据库的解决方案,但如果可能的话......

1 个答案:

答案 0 :(得分:2)

您可以传递日期范围:

dates = Date.commercial(2012,40)..Date.commercial(2012,41)
Model.where(:date => dates)

Date.commercial有更多参数可用 - 上面会给你周一到周一。要设置更具体的日期/时间,请设置look at the docs