Rails:建模平衡运动

时间:2015-09-24 11:32:54

标签: ruby-on-rails ruby activemodel

你好我这里有2个型号:

class Account < ActiveRecord::Base
  belongs_to :user
  has_many :transactions
end

class Transaction < ActiveRecord::Base
  belongs_to :account
  after_create :update_balance

  def update_balance
   balance = self.account.balance
   self.account.update(balance: balance - self.price)
  end
end

1)目前,我有一个余额帐户,每次创建交易时都能更新余额。但是在未来,我将有一个更新的交易,它可以获得一个新的价格,我存储在另一个字段中调用new_price,一旦我们更新新价格,我们如何添加到帐户余额?

2)我们将制定账户余额变动图,因此我们需要存储每个账户余额历史记录,如果我们创建新的账户字段,这是一个很好的方式,每次我们得到一个新的交易?

感谢。

1 个答案:

答案 0 :(得分:0)

应该有一些更复杂的逻辑。关于你的问题:

1)您不应该更新支付交易,因为您会受到副作用(例如某些帐户的无效余额,交易历史记录等)。更好的方法是回滚您的交易。在那里,您将通过验证逻辑(例如,如果资产帐户的未来余额为负数,则无法回滚等)

2)对于存储付款历史记录,您应该使用您的交易模型。

还有很多其他有趣的时刻。如果你想要,你可以看到my gem来完成这项工作。您可以安装它(如果您使用Rails)或为您的支付系统使用一些业务逻辑。