Rails在模型中滚动值

时间:2011-08-13 15:27:12

标签: ruby-on-rails model

我对Rails很新,所以如果我以错误的方式解决这个问题,请原谅我。

我有一个模型,交易,它有一个与之相关的金额。但是,由于金额是计算为子模型(交易者)上金额的总和,因此我不想通过在交易表上实际存在金额字段来创建冗余。我希望能够在交易级别获得和设置金额(交易中设定的值将在交易者之间平均分配)。

我的问题是:对于这种情况,是否有适当的实施方法?

1 个答案:

答案 0 :(得分:0)

不,我认为composed_of不是你想要的。阅读部分实际上非常简单:

class Transaction < ActiveRecord::Base
  has_many :transactors
  ...
  def amount
    self.transactors.sum(:amount)
  end
  ...
end

写入部分(在子模型之间平均分配)虽然有点复杂但有点复杂,我想你会做这样的事情:

class Transaction < ActiveRecord::Base
  has_many :transactors
  ...
  def amount=(value)
    self.transactors.each do |transactor|
      transactor.update_attributes(:amount => value.to_f / self.transactors.count)
    end
  end
  ...
end