При разработке ваши модели перезагружаются при каждом запросе.На производстве они кэшируются, поэтому область будет ссылаться на Time.now, как это было, когда модель была впервые загружена в память.
Обойдите это, используя лямбда-выражение.Лямбда-выражение будет оцениваться каждый раз, когда используется область.
Вы также можете немного высушить свое отношение, используя именованный параметр, чтобы удалить повторяющийся Time.now, как показано:
scope :current_notifications, lambda do
where("starts_at <= :now or ends_at >= :now", now: Time.now).limit(1)
end