将键值推送到jsonb字段

时间:2016-08-30 11:26:59

标签: ruby-on-rails jsonb

我最近在我的一个表

中添加了一个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控制台,我也可以看到任何更改

是这样做的方式还是我错了?

1 个答案:

答案 0 :(得分:2)

当您使用merge时,它会返回带有附加值的哈希值,但要将值添加到哈希值,您需要使用merge!

我认为正确的方法将是

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