С where
мы можем сделать Item.where('stock_amount > ?', 0)
.
Вопрос : Есть ли способ записи в ActiveRecord, который будет производить следующий SQL?
UPDATE items SET stock_amount = stock_amount - 10 where id = 1;
Я пытался
Item.update(1, {stock_amount: ['stock_amount - ?', 10]}
и он работает, но не выдает нужный мне SQL.
Я знаю, что могу достичь того же результата с большим количеством строк, таких как
item = Item.find(1)
item.stock_amount = item.stock_amount - 10
item.save
и использование exec_update
ActiveRecord::Base.connection.exec_update('UPDATE items SET stock_amount = stock_amount - $1 WHERE id = $2', 'sql', [[nil, 10],[nil, 1]])
Этот пост является самым близким, что я получаю.