是否可以让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方法。
答案 0 :(得分:0)
低级数据库接口往往有点受限,因为每个人都假设您正在使用ORM。但是,您可以欺骗ActiveRecord为您完成工作,因为大多数数据库处理逻辑都在ActiveRecord本身。
ActiveRecord查询通常使用查询结果而不是模型或表所说的内容,因此您可以这样说:
input
以及您获得的Model.select('2*3 as six')
个实例将具有Model
个属性。
此诡计也适用于six
:
find_by_sql