Другой способ - создать область в MyModel
или ApplicationRecord
с использованием интерфейса Arel , например tokland , сгенерированного в его ответ следующим образом:
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