【问题标题】:push key value to jsonb field将键值推送到 jsonb 字段
【发布时间】:2017-01-06 15:58:59
【问题描述】:

我最近在我的一张表中添加了一个 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 控制台,我也可以看到任何变化

是这样还是我错了?

【问题讨论】:

    标签: ruby-on-rails jsonb


    【解决方案1】:

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

    我认为正确的方法是

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

    【讨论】:

    • 是的,我看到这里使用的jsonb类似于普通哈希,我也可以user.preferences["twitter_account"] = "something_else"谢谢!
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多