2016-08-30 31 views
0

我最近增加了一個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的值時,我沒有看到任何附加值,即使當我退出控制檯並再次運行導軌控制檯時,我也可以看到任何更改

是這樣做的方式或我錯了?

回答

1

當您使用merge它返回哈希與附加價值,但增加值哈希你需要使用merge!

我認爲正確的方式將

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

是的,我看到jsonb用在這裏類似於正常的哈希,我也可以做'user.preferences [「twitter_account」] =「something_else」'謝謝! – medBo