如何在rails中使用jsonb

Ara*_*ind 2 postgresql ruby-on-rails ruby-on-rails-4 postgresql-9.4

我有一个使用Postgresql 9.4作为后端的rails项目.我有这样的列:

t.json :slot_details, null: false, default: {}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*ert 7

要进行迁移,您可以执行以下操作.在这种情况下,有效负载最初是一个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                                                                          
Run Code Online (Sandbox Code Playgroud)

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