Rails и созданный_ат - PullRequest
       5

Rails и созданный_ат

0 голосов
/ 15 октября 2010

Я делаю:

Order.find(:all, :conditions => "created_at>='#{DateTime.now.year}-#{month}-1' and created_at<='#{Date.new(DateTime.now.year, month.to_i, -1)}'")

Это работает нормально, за исключением того, что все, что создано в последний день месяца, не включено. Created_at может содержать: «2010-09-30 18:34:09». Это НЕ меньше или равно «2010-09-30». Я знаю, что я мог бы просто изменить метод на это:

Order.find(:all, :conditions => "created_at>='#{DateTime.now.year}-#{month}-1' and created_at<='#{Date.new(DateTime.now.year, month.to_i, -1)} 23:59:59'")

... но это кажется неправильным. Есть ли более умный способ сделать это?

Ответы [ 3 ]

2 голосов
/ 15 октября 2010

Или вы можете использовать

< Date.today.next_month.beginning_of_month

, чтобы получить все меньше, чем в следующем месяце.

0 голосов
/ 15 октября 2010

Это может не решить вашу проблему, но вы должны использовать расширения Rails для Rails здесь. Вы можете делать такие вещи, как 1.month.ago, который будет возвращать объект DateTime, представляющий текущую дату минус 1 месяц.

Определены и другие методы, которые вы можете ожидать. 4.days.from_now, 3.days.since(Date.yesterday) и т. Д.

0 голосов
/ 15 октября 2010

Это был бы правильный способ сделать это, ИМХО. Представление времени как 2010-09-30 18:34:09 концептуально представляет собой удобное для человека отображение одного числа. Так что думайте об этом как о сравнении чисел. Поэтому имеет смысл четко указывать минимальные и максимальные значения рассматриваемого числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...