Есть ли способ добавить к существующему балансу или сумме в столбце базы данных, не заменяя его при обновлении?

63
7

Я создаю приложение для бюджетирования. Поэтому мне нужно сделать депозит и снять деньги. Однако метод обновления заменяет предыдущую сумму, а не добавляет к ней. Когда я задаю этот вопрос, я получаю активные миграции записей. Есть ли что-то похожее на update_attributes, которое добавляется, а не заменяет? Или существует тип столбца db, который работает таким образом? Это то, что я имею прямо сейчас.

    def deposit
account = find_account(params[:id])
new_balance = account.balance += params[:account][:balance].to_f
account.assign_attributes(balance: new_balance)
if account.save
redirect_to accounts_path
else
redirect_to :back
end
end

спросил(а) 2021-01-25T15:54:24+03:00 4 месяца, 3 недели назад
1
Решение
63

Вы можете использовать + = по полю/атрибуту, вам не нужны атрибуты assign_attributes

def deposit
account = find_account(params[:id])
account.balance += params[:account][:balance].to_f
if account.save
redirect_to accounts_path
else
redirect_to :back
end
end

ответил(а) 2021-01-25T15:54:24+03:00 4 месяца, 3 недели назад
44

Почему бы не вытащить существующее значение в ваш клиентский код, не добавьте волшебство и не обновите запись с новым значением?

ответил(а) 2021-01-25T15:54:24+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема