假设我有一个包含length:decimal
,height:decimal
和depth: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吗?