У меня есть модель Trade
, в которой есть столбцы traded_at
, price
, amount
.
И для этого есть default_order
.
scope :default_order, -> {
order(traded_at: :desc, price: :asc, amount: :desc)
}
Я хочу отфильтровать trades
, используя это предложение.
Это мой код для него без пункта заказа.
scope :newer_than, ->(trade) {
where(<<-SQL)
traded_at > '#{trade.traded_at.to_s(:db)}' OR
(traded_at = '#{trade.traded_at.to_s(:db)}' AND price < #{trade.price}) OR
(traded_at = '#{trade.traded_at.to_s(:db)}' AND price = #{trade.price} AND amount > #{trade.amount})
SQL
}
Когда я добавляю еще одно условие для предложения order
, мне нужно добавить 4 условия в предложении where
.
Я думаю, что это не эффективно. Есть ли способ использовать условие order
для предложения where
?