ruby-on-rails - 如何在 Rails 中使用 jsonb

标签 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?

最佳答案

要迁移它,您可以执行以下操作。本例中的 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

关于ruby-on-rails - 如何在 Rails 中使用 jsonb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343231/

相关文章:

ruby-on-rails - Rails 嵌套表单属性不保存

postgresql - postgres 中带有 psql 的空行。我怎样才能删除它?

SQL - 检查列表中的值是否在表中不存在并相应地返回 bool 值

java - 查询结果为 "ERROR: operator does not exist: character varying ~~ bytea"

ruby-on-rails - 根据单击的按钮渲染三个不同的部分

ruby-on-rails - 在 Rails 中检查对象是否存在并设置为等于的有效方法

ruby-on-rails - 如何在表单声明 block 之外添加额外的表单字段

ruby-on-rails - 如何在以文本形式存储在数据库中的 json 字段中使用 Activerecord 进行搜索

ruby-on-rails - rails 中有效数字的自定义错误消息

ruby-on-rails - ActionMailer 在 Rails 4.2 中使用哪个 ActiveJob 队列?