ruby-on-rails - 如何在 Rails 中使用带有 before_save 的计算列
问题描述
假设我有一个带有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
column。
我重构我的代码以使用 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 方法中,volume 或 self.volume 为 nil,因为它仍未保存。
如何在 Rails 中处理该用例?我需要 before_save 吗?
解决方案
推荐阅读
- excel - 如果单元格为空白,则添加另一个的总和
- firebase - 文件未上传到 Firebase 存储
- mysql - NodeJS MySQL 高级查询
- c# - 如何在 EF6 中表示文件系统
- here-api - 使用 GET 方法定义 Region 资源中的区域
- c# - 如何使用.net core 2在启动时删除特定的cookie?
- angular - 在应用程序中禁用 Angular AuthGuard 和拦截器安全性,切换功能?
- sql - 带有分片(Vitess)的 mysql 会比任何没有 SQL 数据库都快吗?
- reactjs - RadioButton 一个接一个(进入一个空间)
- python - 如何在 for 循环中将“无”变量更改为“不适用”