gpt4 book ai didi

ruby-on-rails - JSONB 不适用于 Rails 5? JSON 字段以字符串形式返回

转载 作者:行者123 更新时间:2023-11-29 11:24:08 25 4
gpt4 key购买 nike

我有一个 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

如果我创建一个新 session ( Conference.create(user: user, name: 'test', payload: '{}') ) 然后获取它作为字符串返回的有效负载.我在这里错过了什么??

显然,根据 this issue,这现在是 rails 中的“预期行为” .不确定现在如何进行这项工作...

猜猜我需要在每次请求后调用 JSON.parse() 吗?

最佳答案

我目前的解决方案是使用以下 getter 方法:

def payload
(self[:payload].class == String) ? JSON.parse(self[:payload]) : self[:payload]
end

这似乎很奇怪,它是使其工作所需的行为,但如果您想要之前的 Rails 4 功能,则需要根据 the comments here 切换到此功能。 .

更新

我在调查一个完全不同的问题时随机结束了我的问题,但我想我会更新这个答案。

答案是不要将默认值设置为 '{}',而是设置为 {}。非常简单的修复:)

关于ruby-on-rails - JSONB 不适用于 Rails 5? JSON 字段以字符串形式返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com