Активная запись - поиск записей, которые были созданы до сегодняшнего дня Я хочу получить все записи, где поле created_at меньше сегодняшнего дня (дата). Есть что-то вроде: MyTable.find_by_created_at(< 2.days.ago) Ответ 1 Используя ActiveRecord стандартный способ: MyModel.where("created_at < ?", 2.days.ago) Используя базовый Arel интерфейс: MyModel.where(MyModel.arel_table[:created_at].lt(2.days.ago)) Используя простой тонкий слой над Arel: MyModel.where(MyModel[:created_at] < 2.days.ago) Использование библиотеки squeel: MyModel.where { created_at < 2.days.ago } Ответ 2 Другой способ - создать область в MyModel или в ApplicationRecord с помощью Arel, например tokland sugensted в его ответ так: scope :arel, ->(column, predication, *args) { where(arel_table[column].public_send(predication, *args)) } Пример использования области действия: MyModel.arel(:created_at, :lt, 2.days.ago) Для всех предикатов проверьте документация или исходный код. Эта область не нарушает цепочку where. Это означает, что вы также можете: MyModel.custom_scope1.arel(:created_at, :lt, 2.days.ago).arel(:updated_at, :gt, 2.days.ago).custom_scope2 Ответ 3 Time.now относится прямо сейчас или к этой самой секунде. Поэтому, чтобы найти всех пользователей перед этим, просто используйте @users = User.all Это позволит найти всех пользователей до настоящего времени и исключить будущих пользователей или пользователей, которые присоединяются после Time.now
Ответ 1 Используя ActiveRecord стандартный способ: MyModel.where("created_at < ?", 2.days.ago) Используя базовый Arel интерфейс: MyModel.where(MyModel.arel_table[:created_at].lt(2.days.ago)) Используя простой тонкий слой над Arel: MyModel.where(MyModel[:created_at] < 2.days.ago) Использование библиотеки squeel: MyModel.where { created_at < 2.days.ago }
Ответ 2 Другой способ - создать область в MyModel или в ApplicationRecord с помощью Arel, например tokland sugensted в его ответ так: scope :arel, ->(column, predication, *args) { where(arel_table[column].public_send(predication, *args)) } Пример использования области действия: MyModel.arel(:created_at, :lt, 2.days.ago) Для всех предикатов проверьте документация или исходный код. Эта область не нарушает цепочку where. Это означает, что вы также можете: MyModel.custom_scope1.arel(:created_at, :lt, 2.days.ago).arel(:updated_at, :gt, 2.days.ago).custom_scope2
Ответ 3 Time.now относится прямо сейчас или к этой самой секунде. Поэтому, чтобы найти всех пользователей перед этим, просто используйте @users = User.all Это позволит найти всех пользователей до настоящего времени и исключить будущих пользователей или пользователей, которые присоединяются после Time.now