ruby-on-rails - 如何对存储在 Rails 5.1 和 PG 的 JSONb 字段中的多个值求和

标签 ruby-on-rails postgresql jsonb

我有一个 Rails 应用程序,它有一个名为 items: 的表,其中包含一个具有多个值的 jsonb 字段:item_weight1:、item_weight2、item_weight3、item_weight4、item_weight5...等

有没有办法将所有这些值相加并显示在 View 中?

有没有更有效的方法来做到这一点(存储表单中的多个值并在 View 中显示这些值的总和)?

如果您需要更多详细信息(代码),请告诉我。

非常感谢!

最佳答案

假设您的 jsonb 列以散列形式返回(如果不是,请告诉我们),那么您需要对其进行操作以便对值求和。

你应该检查一下

@item.jsonb_column.class # => Hash

我举个例子猜你的数据。

hash_from_jsonb_column = {"item_weight1": "10", "item_weight2": "10", "item_weight3": "10", "item_weight4": "10", "item_weight5": "10"}

获取总和的一种方法是将值映射到 float 组:

sum = hash_from_jsonb_column.values.map(&:to_f).inject(:+) # => 50.0

关于ruby-on-rails - 如何对存储在 Rails 5.1 和 PG 的 JSONb 字段中的多个值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51220175/

相关文章:

json - 如何从 postgres JSONB 列获取值?

arrays - 存储在 jsonb 中的数组的 Postgres 总和

ruby-on-rails - 我如何让我的 Rails 5 日志像 Rails 4 一样向我显示每个操作的详细信息?

ruby-on-rails - 如何测试 Rails 缓存功能

css - Rails 生产不显示背景图像

postgresql - 在 Dockerfile 中启动 postgres

php - Postgresql 搜索早于阈值的项目

ruby-on-rails - Rails - text_field_tag ---- 设置 tabindex?

java - JDBC 类路径问题

sql - 查询在 postgres jsonb 中相交的 json 键