我想在total_price
medic_record
total_price = med_show + lab_price + total_room
schema.rb
create_table "medic_records", force: :cascade do |t|
t.decimal "lab_price"
t.decimal "med_show"
t.decimal "total_price"
t.decimal "total_room"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我在medic_record模型中的方法
before_save :save_total
def save_total
self.update_all(total_price: self.med_show + self.lab_price + self.total_room)
end
但我收到了这个错误:
TypeError(nil无法强制转换为BigDecimal): app / models / medic_record.rb:31:in&& 39; +' app / models / medic_record.rb:31:in' save_total'
我该如何解决这个问题?
答案 0 :(得分:0)
你应该转换为浮动每个字段以得到总和:
def save_total
total_price=med_show.to_f+lab_price.to_f+total_room.to_f
end
尽管如此,我无法理解为什么update_all(
,因为模型中的此方法会识别数据库中的1条记录,save_total
将为表的每条记录执行
答案 1 :(得分:-1)
<强>解决强>
哦,伙计,我已经尝试过这种方法并修复!!
def save_total
self.total_price = self.med_show.to_s.to_d + self.lab_price.to_s.to_d + self.total_room.to_s.to_d
end
抱歉:)