Nic*_*ill 6 postgresql json ruby-on-rails
我有一个jsonb字段,无论出于什么原因,当我调用字段时,它会以字符串形式返回.这是迁移:
class CreateConferences < ActiveRecord::Migration[5.0]
def change
create_table :conferences do |t|
t.references :user
t.string :name
t.jsonb :payload, default: '{}'
t.jsonb :processed_payload
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果我创建一个新的conference(Conference.create(user: user, name: 'test', payload: '{}')),然后获取有效负载,它将以字符串形式返回.我在这里失踪了什么?
显然现在根据这个问题,这就是rails中的"预期行为" .不知道如何让这项工作现在......
猜猜我需要在每次请求后调用JSON.parse()吗?
我目前的解决方案是使用以下getter方法:
def payload
(self[:payload].class == String) ? JSON.parse(self[:payload]) : self[:payload]
end
Run Code Online (Sandbox Code Playgroud)
这似乎很奇怪,它将是使其工作所需的行为,但如果您想要先前的Rails 4功能,您将需要根据此处的注释切换到此.
我在查看一个完全不同的问题时随机结束了我的问题,但我想我会更新这个答案.
答案是没有默认值'{}',而是{}.很简单的修复:)
| 归档时间: |
|
| 查看次数: |
1980 次 |
| 最近记录: |