2014-12-07 45 views
1

我有一个使用Postgresql 9.4作为后端的rails项目。我有这样的列:如何在rails中使用jsonb

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

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

回答

3

这里是它如何使用Rails 4.2

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

上面的答案扔误差为我工作。

+0

你可以发布你的错误?我上下运行了该迁移以确认它对我有用。 – Robert 2014-12-30 13:59:24

+1

@Robert错误是像无法将字符串转换为json或类似的东西。 – Aravind 2014-12-30 14:27:32

+0

我的迁移只适用于json到jsonb。你的领域是一个字符串 - 不是JSON? – Robert 2014-12-30 16:17:29

6

要迁移它,可以执行以下操作。在这种情况下,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                   

要了解如何查询jsonb在Rails的4.2,结账this article

+0

这会删除数据吗? – coderVishal 2016-02-07 10:29:45

+1

这不会删除数据。它将json转换为jsonb。 – Robert 2016-02-08 17:34:25