Вы не видите желаемых ответов, потому что Ruby оценивает ваш вызов Time.now, когда он оценивает определение вашего класса, а не когда вы вызываете область. Вам нужно передать lambda
на ваш named_scope
звонок, чтобы он оценивал каждый запрос:
# ensure that Time.now is evaluated on every call
named_scope :today_only, lambda {{ :conditions => ["workouts.created_at BETWEEN ? AND ?", Time.zone.now.at_beginning_of_day, Time.zone.now.end_of_day ] }}
Кроме того, я думаю, что ваши временные границы могут быть неправильными. Вы ищете workouts
, которые были созданы за последние 24 часа (относительно Time.now), или только тренировки, которые были созданы «сегодня»? Ваш пример работает для первого, пример выше - для последнего.