我对Rails很新,所以如果我以错误的方式解决这个问题,请原谅我。
我有一个模型,交易,它有一个与之相关的金额。但是,由于金额是计算为子模型(交易者)上金额的总和,因此我不想通过在交易表上实际存在金额字段来创建冗余。我希望能够在交易级别获得和设置金额(交易中设定的值将在交易者之间平均分配)。
我的问题是:对于这种情况,是否有适当的实施方法?
答案 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