3

我有一个使用 Postgresql 9.4 作为后端的 Rails 项目。我有这样的专栏:

t.json :slot_details, null: false, default: {}

如何将其从 JSON 更改为 JSONB?我应该添加索引并将其更改为 JSONB 吗?

4

2 回答 2

7

要进行迁移,您可以执行以下操作。在这种情况下,Payload 最初是一个 json 字段。

  class AlterJsonbToJsonAndBack < ActiveRecord::Migration                      
    def up                                                                     
      change_column :dynamics, :payload, 'jsonb USING CAST(payload AS jsonb)'  
    end                                                                        

    def down                                                                   
      change_column :dynamics, :payload, 'json USING CAST(payload AS json)'    
    end                                                                        
  end                                                                          

要了解如何在 Rails 4.2 中查询 jsonb,请查看这篇文章

于 2014-12-24T01:56:59.870 回答
4

这是它在 Rails 4.2 中的工作方式

t.jsonb :slot_details, index: true, default: {}

上面的答案给我带来了错误。

于 2014-12-29T09:13:30.727 回答