Heroku PG 和 JSON 类型

Heroku PG and JSON Types

我有一个应用程序使用 rails 作为 API 和 ember 作为前端(使用 ember-rails gem).

在我的本地机器上,无论是生产还是开发,一切都运行良好。但是,每次我 运行 heroku run rake db:migrate 部署应用程序后,我都会收到以下错误:

PG::UndefinedObject: ERROR: type "json" does not exist

它失败的迁移是这样的:

class AddProjectimageToImages < ActiveRecord::Migration
  def change
    add_column :images, :project_image, :json
  end
end

有谁知道为什么 heroku 不接受 JSON 类型,有解决办法吗?

Ember 在从 API 接收到 JSON 时很大程度上依赖于正确格式化,所以我希望尽可能保留 JSON 类型。

JSON postgresql < 9.2

不支持数据类型

因此,您有两个选择:

1)(推荐)按照以下 heroku 教程将您的 PG 版本升级到(至少)9.2:https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases

2) 将 JSON 存储到 text 数据类型中,如果您不使用任何 postgresql json 函数,这可能就足够了。然后,您可以在模型中使用 serialize,这将在您保存 activerecord 模型时处理转换:

class Image < ActiveRecord::Base
  serialize :project_images, JSON
end

为了防止此类问题,我强烈建议确保您的不同环境 (dev/staging/prod) 使用相同版本的任何您需要的软件