如何在rails中使用jsonb

Posted

技术标签:

【中文标题】如何在rails中使用jsonb【英文标题】:how to use jsonb in rails 【发布时间】:2014-12-07 13:42:44 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

这会删除数据吗? 这不会删除数据。它将 json 转换为 jsonb。【参考方案2】:

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

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

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

【讨论】:

你能发布你的错误吗?我上下运行了迁移以确认它对我有用。 @Robert 错误类似于无法将字符串转换为 json 或类似的东西。 我的迁移只适用于 json 到 jsonb。您的字段是字符串 - 不是 json? 这是一个 json 但没有工作所以我最终做了我所做的

以上是关于如何在rails中使用jsonb的主要内容,如果未能解决你的问题,请参考以下文章

如何从 postgres JSONB 列中获取值?

Rails 和 jsonb 类型“jsonb”不存在

ruby on rails jsonb 列默认值

将 PostgreSQL JSON 列升级到 JSONB?

如何在 JPA 中使用 Postgres JSONB 数据类型?

如何使用 sqlalchemy 查询 jsonb 数组