Ответы, содержащие scope
примеров, неверны.Rails использует нетерпеливую оценку в областях, поэтому Time.now.beginning_of_month
всегда будет началом месяца, когда область была первоначально оценена.Правильный способ использования дат в области - это передать лямбду в scope
.
class Model < ActiveRecord::Base
scope :this_month, -> { where(created_at: Time.now.beginning_of_month..Time.now.end_of_month) }
end
. В Rails 4 области должны использовать вызываемый объект, такой как Lambda
или Proc
.