【发布时间】:2017-12-17 13:06:47
【问题描述】:
是否可以让 ActiveRecord 以某种方式从原始查询中转换 JSON 值?
这是一个示例,我希望将 {"x": 1} 结果转换为哈希值,但我得到的是字符串:
irb(main):017:0> ActiveRecord::Base.connection.select_value(%{SELECT '{"x": 1}'::json})
(0.2ms) SELECT '{"x": 1}'::json
=> "{\"x\": 1}"
irb(main):018:0> ActiveRecord::Base.connection.select_value(%{SELECT '{"x": 1}'::json}).class
(0.2ms) SELECT '{"x": 1}'::json
=> String
请不要推荐JSON.parse('{"x": 1}')。我需要 ActiveRecord 方法。
【问题讨论】:
-
“我需要 ActiveRecord 方法”是什么意思?你想对结果做什么?你有模特吗?真正的查询是什么样的?
-
你试过 ActiveModel 序列化器 JSON 吗?你可以在这里找到更多信息api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html
-
@muistooshort 我只需要 ActiveRecord 级别的东西,也许可以实现基于 PostgreSQL OID 或类似的类型转换。我想让 AR 自动实现。
标签: ruby-on-rails json ruby activerecord rails-activerecord