плюс 1 к целочисленной записи для каждой записи в БД - PullRequest
1 голос
/ 11 марта 2012

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

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}")

Есть ли "чистый" способ сделать это?

1 Ответ

2 голосов
/ 11 марта 2012

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

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

Transaction.where("account_id = ? AND date > ?", t.account_id, t.date).update_all(["account_state = account + ?", account_offset])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...