基本上我有一个具有以下属性的表:id,created_at,updated_at,user_id,email,debit,credit和acctbal。我使用Rails,并且我在具有帐户历史记录的页面上有一个添加资金按钮。如果我存入50.00,它将在该表中正确添加一个新行,并在存款属性中放入50,保持信用无效。但是acctbal属性也是null,我无法弄清楚如何将当前信用值添加到该表中最后一行的acctbal值。我正在使用RoR。我将使用相同的技术作为借方值。我的创建方法是以下没有acctbal的计算因为我被卡住了。
def create
#@account = Account.new(account_params)
# @account.save
# respond_with(@account)
@account = Account.new(account_params)
@account.email = current_user.email
@account.user_id = current_user.id
respond_to do |format|
if @account.save
format.html { redirect_to accounts_url, notice: 'Thank you and enjoy.' }
format.json { render :show, status: :created, location: @account }
else
format.html { render :new }
format.json { render json: @account.errors, status::unprocessable_entity }
end
end
end
任何人都可以帮助我,手指在尝试一堆我在网上找到的东西时流血但无济于事。
答案 0 :(得分:0)
我认为你所得到的是:
def credit
@previous_balance = Account.where('user_id = ?', current_user.id).order(:created_at).last.acctbal
@account = Account.new(account_params)
@account.email = current_user.email
@account.user_id = current_user.id
@account.acctbal = account_params[:deposit] + @previous_balance
respond_to do |format|
if @account.save
format.html { redirect_to accounts_url, notice: 'Thank you and enjoy.' }
format.json { render :show, status: :created, location: @account }
else
format.html { render :new }
format.json { render json: @account.errors, status::unprocessable_entity }
end
end
end
正如我在上面的评论中所说的那样,你只是将他们最后一次创建的行的最后余额与他们的ID相加并将其添加到存款中。有两点需要注意:
1)如果这是你的方式,你不应该在这个表中update
行,或者如果你这样做,你应该使用updated_at
属性。
2)您应该在created_at属性上放置一个索引,以防止在表变大时对数据库进行拖动。