我最近在我的一个表中添加了一个 jsonb 字段
add_column :users, :preferences, :jsonb, null: false, default: '{}'
我正在存储这样的值:
user = User.first
user.preferences = { job: "programmer" }
现在我想将另一个键值对推送到我的 jsonb 字段,我在控制台中尝试了此操作:
user = User.first
user.preferences.merge(twitter_account: "something")
user.save
我得到了类似的东西
....
(0.3ms) COMMIT
=> true
这通常意味着它已保存!但是当我检查preferences
的值时,我没有看到任何附加值,即使当我退出控制台并再次重新运行rails控制台时,我也可以看到任何变化
这是这样做的方法还是我错了?
最佳答案
当您使用merge时它返回带有添加值的哈希值,但要将值添加到哈希值,您需要使用 merge!
我认为正确的方法是
user.preferences = user.preferences.merge(twitter_account: "something")
关于ruby-on-rails - 将键值推送到 jsonb 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39226261/