我有一个RoR 5.1应用,正在尝试将其部署到Heroku。
在我的gem文件中,将宝石“ pg”指定为生产用。我还包括宝石“ money-rails”。在我的数据库/迁移文件中,我有几行内容可以创建“获利”类型的字段,据我了解,应该通过添加“ money-rails” gem来处理。
部署应用程序时,我没有遇到任何问题,但是当我迁移数据库以创建表时,出现以下错误:
StandardError: An error has occurred, this and all later migrations canceled: PG::UndefinedObject: ERROR: type "monetize" does not exist : ALTER TABLE "plans" ALTER COLUMN "price" TYPE monetize (followed by additional error lines)
关于如何解决此问题的任何想法?我需要添加宝石吗?在Heroku上是否需要更新/安装某些东西?我不确定是否有办法忽略执行这些特定的迁移,因为这些迁移对于代码库而言不是必需的。
我可以编写一个迁移操作来删除表,但这只会在它尝试创建表之后发生,所以不确定解决方法是什么。
根据评论,这是创建了相关表格之一的迁移:计划
class CreatePlans < ActiveRecord::Migration[5.1]
def change
create_table :plans do |t|
t.string :payment_gateway_plan_identifier
t.string :name
t.float :price
t.integer :interval
t.integer :interval_count
t.integer :status
t.text :description
t.timestamps
end
end
end
然后是我为实现“获利”所做的更改:
class ChangePriceToMonetizeInPlans < ActiveRecord::Migration[5.1]
def change
change_column :plans, :price, :monetize
end
end
显然,根据评论,获利也不是受支持的PG类型。但是,由于我已经创建了迁移(我在开发中使用了SQL lite 3),所以我不确定如何退回并删除它,因为我认为迁移是有序的。抱歉,对我来说,这种迁移的东西(和一般的导轨)仍然是新的。