ruby-on-rails - 如何在 Ruby 中使用 nil 检查在一行中迭代 ActiveRecord 结果集
问题描述
我有一个 Active Record 结果数组,我想遍历每条记录以获取特定属性并将所有这些属性添加到一行中并进行 nil 检查。这是我到目前为止得到的
def total_cost(cost_rec)
total= 0.0
unless cost_rec.nil?
cost_rec.each { |c| total += c.cost }
end
total
end
有没有一种优雅的方法可以在一行中做同样的事情?
解决方案
像这些吗?
def total_cost(cost_rec)
(cost_rec || []).inject(0) { |memo, c| memo + c.cost }
end
或者
def total_cost(cost_rec)
(cost_rec || []).sum(&:cost)
end
推荐阅读
- objective-c - CAGradientLayer中的渐变填充
- mysql - mysqld 不会在 MacOS 上全新安装时启动
- azure - 如何将本地驱动器中的现有文件夹映射到 Azure 文件共享存储?
- nunit - 如何在 NUnit GUI 中搜索测试名称
- java - 如何在 Java Admin SDK 中加密有效负载
- python - 使用 for 循环向数据框添加坐标
- javascript - 使用axios时如何停止javascript中的无限循环?
- unity3d - Oculus Quest 单通道和多通道不起作用?
- java - JDBC(Microsoft SQL Server):找不到适合 url 的驱动程序
- python - 熊猫根据一列中值的条件一次覆盖多列中的值