Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中使用jsonb_Ruby On Rails_Postgresql_Ruby On Rails 4_Postgresql 9.4 - Fatal编程技术网

Ruby on rails 如何在rails中使用jsonb

Ruby on rails 如何在rails中使用jsonb,ruby-on-rails,postgresql,ruby-on-rails-4,postgresql-9.4,Ruby On Rails,Postgresql,Ruby On Rails 4,Postgresql 9.4,我有一个以Postgresql 9.4为后端的rails项目。我有这样的专栏: t.json :slot_details, null: false, default: {} 如何将其从JSON更改为JSONB?我是否应该添加索引并将其更改为JSONB?要迁移此索引,您可以执行以下操作。本例中的有效负载最初是一个json字段 class AlterJsonbToJsonAndBack < ActiveRecord::Migration

我有一个以Postgresql 9.4为后端的rails项目。我有这样的专栏:

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

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

要迁移此索引,您可以执行以下操作。本例中的有效负载最初是一个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                                                                          
类AlterJsonbToJsonAndBack

要了解如何在Rails 4.2中查询jsonb,请签出

以下是它如何与Rails 4.2一起工作的

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

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

你能发布你的错误吗?我上下运行该迁移以确认它对我有效。@Robert错误是无法将字符串转换为json或类似的错误。我的迁移只对json转换为jsonb有效。你的字段是字符串吗?不是json?它是json,但不起作用,所以我最终做了我做的事情。这会删除数据吗?这不会删除数据。它将json转换为jsonb。