Вы хотите Date.today, а не date.today. Нет ничего плохого в том, что вы делаете, вы просто неправильно ссылаетесь на класс даты
Более того, это будет Date.today.next_month.beginning_of_month
Event.where (: start_date => Date.today..Date.today.next_month.beginning_of_month)
также отлично работает.
Взгляните на мой плагин by_star , который позволяет делать такие вещи, как:
Event.by_month(Time.now, :field => "start_date")
Я бы пошел дальше и определил область видимости в вашей модели для повторного использования.
# 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