【发布时间】:2016-08-21 05:29:25
【问题描述】:
我有一个模型 Payment 和一个控制器名称 payment_controller。 Payment 模型的架构类似于
class CreatePayments < ActiveRecord::Migration
def change
create_table :payments do |t|
t.belongs_to :user
t.decimal :ammount, :precision => 8, :scale => 2, null: false
t.decimal :balance, :precision => 8, :scale => 2, null: false
t.timestamps null: false
end
end
end
我可以向数据库中添加条目,但我想要做的是每次用户添加付款时,余额字段应更新为先前余额和新金额的总和。我不知道该怎么做。请帮我。
我在控制器代码中做了一些小改动。在我尝试更新付款模型中的余额之前,但现在我尝试更新用户模型中的余额。还是错误。
user = current_user
netamt = (amount.to_f - ((amount.to_f*2.9)/100 + 0.30))
payment = user.payments.create(:ammount => netamt)
user.update_attribute(balance: user.balance + netamt)
【问题讨论】:
-
只是加法吧?你能解决什么问题
balance += payment_amount -
还是一头雾水。假设用户 A 在 db 字段中有 60 美元作为余额。如果他再次添加 30 美元,金额字段应为 30 美元,余额字段应为 30 美元 + 60 美元,总计 90 美元。
-
是的,你可以这样做:
amount = new_amount然后balance += amount -
如果不是您的情况,请发布您的控制器代码..
-
为什么是付款模式的余额?我的建议:不要使用回调,它们会在以后和测试时造成麻烦。使其成为将两个数据库操作包装在事务中的方法。
标签: ruby-on-rails ruby