将键值推送到 jsonb 字段

push key value to jsonb field

我最近在我的一张表中添加了一个 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 it return hash with added values but to add values to hash you need to use merge!

我认为正确的方法是

user.preferences = user.preferences.merge(twitter_account: "something")