我有3个模型has_many,通过关系:lab,medic_record和lab_medic。在medic_record模型中,我有一个计算实验室价格的方法,我也创建了一个迁移,将“lab_price:decimal”列添加到medic_record
medic_record.rb
has_many :lab_medics, :dependent => :destroy
has_many :labs, :through => :lab_medics
before_save :finalize
def lab_price
Lab.where(:id => self.lab_ids).reduce(0) { |sum, x| sum += x[:price].to_f }
end
private
def finalize
self[:lab_price] = lab_price
end
lab.rb
has_many :lab_medics, :dependent => :destroy
has_many :medic_records, :through => :lab_medics
lab_medic.rb
belongs_to :lab
belongs_to :medic_record
我的问题是如何将medic_record模型中的lab_price保存到数据库'专栏:lab_price'?我尝试使用'before_save:finalize'方法,但在我为medic_record创建新记录后,数据库上的结果总是“0.0”。
答案 0 :(得分:0)
<强>解决强>
我用这个改变了方法并且它有效!!
def self.save_tot(medic)
medic.update_attributes(lab_price: Lab.where(:id => medic.lab_ids).reduce(0) { |sum, x| sum += x[:price].to_f })
end