Heroku PG和JSON类型

时间:2015-01-19 15:17:21

标签: ruby-on-rails json heroku ember.js

我有一个应用程序,它使用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类型。

1 个答案:

答案 0 :(得分:1)

postgresql&lt;不支持

JSON数据类型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)使用您需要的任何软件的相同版本