Возможный дубликат:
Атрибут Scoping date на этой неделе?
Я пытаюсь охватить все мои продукты на этой неделе, поэтому он должен показать все продукты, ведущие в любой день недели.
class Product < ActiveRecord::Base
attr_accessible :purchase_date
def self.last_week # All prices of last week.
where(:purchase_date => 1.week.ago)
end
create_table :products do |t|
t.date :purchase_date
end
end
Этот код ничего не отображает в представлении, но что мне нужно исправить?
ANSWER
По какой-то причине мне пришлось добавить advance(:days => -1)
, чтобы также получить понедельник. Возможно, вам не придется это делать.
def self.last_week
where(:purchase_date => 1.week.ago.beginning_of_week.advance(:days => -1)..1.week.ago.end_of_week).order("purchase_date desc")
end
ОБНОВЛЕННЫЙ ОТВЕТ
Мне пришлось сделать advance(:days => -1)
из-за часовой пояс, в котором я находилась. Я избавился от этого, убедившись, что я в своем часовом поясе. Так что теперь это может быть нормально, как и должно быть:
def self.last_week
where(:purchase_date => 1.week.ago.beginning_of_week..1.week.ago.end_of_week)
end
И он должен работать правильно ТОЛЬКО, если вы заходите по часовой пояс Rails или настраиваете свой собственный:
приложение/Config/окружающая среда /development.rb
config.time_zone = "Eastern Time (US & Canada)"
Удачи.