将模型上的实验室价格保存到数据库轨道

时间:2016-01-15 06:53:58

标签: postgresql ruby-on-rails-4

我有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”。

1 个答案:

答案 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