2012-03-10 5 views
1

Мне нужно плюс некоторое значение для целочисленного столбца для многих записей в db. Я пытаюсь сделать это в "чистом" виде:плюс 1 для целочисленной записи для каждой записи в БД

Transaction.where("account_id = ? AND date > ?", t.account_id, t.date). 
update_all("account_state = account + ?", account_offset) 

или

Transaction.where("account_id = ? AND date > ?", t.account_id, t.date). 
update_all("account_state += ?", account_offset) 

я получаю ошибку:

QLite3::ConstraintException: constraint failed: 
UPDATE "transactions" SET account_state = (account_state + ?) 
WHERE (account_id = 1 AND date > '2012-03-01') AND (-10000) 

Но работает "грязный" способ:

Transaction.where("account_id = ? AND date > ?", t.account_id, t.date). 
update_all("account_state = account + #{account_offset}") 

Есть ли какой-либо «чистый» способ сделать t его?

ответ

2

Второй параметр update_all - это не значение ?, а условия (необязательно) запроса SQL.

Вы можете попробовать с

Transaction.where("account_id = ? AND date > ?", t.account_id, t.date).update_all(["account_state = account + ?", account_offset]) 
+0

Спасибо, это работает! – Alexey

Смежные вопросы