开发者

Rails 3 Updating an Associated Model

I have a Rails 3 application with Loan and Transaction objects. When a Transaction is saved, I want to deduct the Transaction.amount from the Loan.amount_remaining in an after_save model method, modify_loan, in the Transaction model.

Is this the best place for this code (as opposed to calling an update method in the Loan model), and if so, how do I access and save Loan data from the Transactio开发者_Python百科n model?

Here's what I've been trying to do:

class Transaction < ActiveRecord::Base
belongs_to :loan
belongs_to :customer
after_save :modify_loan

def modify_loan
    newamount = Loan.amount_remaining - self.amount
    if amount >= 0
        Loan.amount_remaining = newamount
    else
        nil
    end
end
end

However, this obviously isn't working. Does anyone know the proper way to do this? I feel like I've found some related questions on SO using Model.build, but how is this used?


Since you're trying to update a different model (a Loan instead of a Transaction), you need to actually save your update manually. Also, you're calling Loan (the whole class) rather than loan (your transaction's loan). This should work:

def modify_loan
  newamount = loan.amount_remaining - self.amount
  loan.update_attributes(:amount_remaining => newamount)
end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜