Я думаю, named_scope
- довольно элегантный путь, но если вы выберете этот путь, вы захотите использовать его с методом lambda
, чтобы время не ограничивалось временем, когда приложение изначально загружен.
Например, это:
named_scope :last_month, :conditions =>
['created_at > ? AND created_at < ?',
Date.today.last_month.beginning_of_month, Date.today.beginning_of_month]
будет работать правильно в первый месяц работы вашего приложения, но неправильно в следующем месяце, если приложение не будет перезапущено.
Но это:
named_scope :last_month, lambda {
{:conditions => ['created_at > ? AND created_at < ?',
Date.today.last_month.beginning_of_month, Date.today.beginning_of_month]}}
будет работать каждый раз, потому что лямбда-метод выполняется при каждом вызове, переоценивая Date.today
s.