Подтвердить что ты не робот

Rails - попытка запроса из диапазона дат... все с сегодняшнего дня

Я пытаюсь найти лучший способ запросить диапазон дат от рельсов... Я посмотрел на Google, но не уверен, как использовать этот синтаксис.

У меня есть модель, которая имеет различные события, и мне нравится добавлять в мое условие поиска оговорку, которая должна показывать только события, где поле: st_date сегодня или позже, по сути, показывают только текущие данные, ничего не произошло до сегодня.

У меня возникла проблема, потому что у меня нет даты окончания, чтобы остановить запрос, я хочу запросить все с сегодняшнего дня до следующего месяца.

Я думал что-то вроде

 @events = Event.find(:all, :conditions => ["start_date between ? and ?",
         date.Today, date.next_month.beginning_of_month])

но я получаю ошибку undefined локальную переменную или метод `date '......

Нужно ли мне что-то особенное использовать для класса Date? Или что-то не так с моим синтаксисом запроса? Я бы очень признателен за любую помощь.

4b9b3361

Ответ 1

Вы хотите Date.today, а не date.today. Нет ничего плохого в том, что вы делаете, вы просто не ссылаетесь на класс даты правильно

Кроме того, это было бы Date.today.next_month.beginning_of_month

Ответ 2

Я бы сделал еще один шаг и определил область в вашей модели для повторного использования.

# rails 3 example:
# app/models/event.rb
scope :upcoming, lambda {
  where("start_date between ? and ?", Date.today, Date.today.next_month.beginning_of_month)
}

# app/controllers/some_controller.rb
@events = Event.upcoming

В Rails 3 также есть отличный эпизод Railscasts:
http://railscasts.com/episodes/202-active-record-queries-in-rails-3

Ответ 3

Event.where(:start_date => Date.today..Date.today.next_month.beginning_of_month) также отлично работает.

Ответ 4

Взгляните на мой by_star плагин, который позволяет вам делать такие вещи, как:

Event.by_month(Time.now, :field => "start_date")