如何在Rails中将计算列与before_save一起使用

时间:2019-03-06 16:32:29

标签: ruby-on-rails before-save

假设我有一个包含length:decimalheight:decimaldepth:decimal列的Order模型。 我有一个计算体积的模型方法:

def volume
  length * height * depth
end

我还有另一种计算special_volume的方法:

def special_volume
  volume * 2.43
end

让我们假设现在需要将计算出的字段保存在数据库中,因此我创建了volume:decimal和special_volume:decimal列。

我将代码重构为像这样使用before_save:

before_save do
  self.volume = set_volume
  self.special_volume = set_special_volume
end

private
  def set_volume
    length * height * depth
  end

  def set_special_volume
    volume * 2.43
  end

问题在于,在set_special_volume方法中,卷或self.volume为nil,因为它仍未保存。

如何在Rails中拥抱用例? 我需要before_save吗?

0 个答案:

没有答案