【发布时间】:2015-03-17 20:49:47
【问题描述】:
所以我正在开发一个现有的应用程序,由于某种原因,我能够让它工作并镜像到我的本地环境中,但是当我尝试在 heroku 上迁移时,我收到以下错误,有什么想法吗?
错误:
== 20141119113015 CreateReleasedInventoryStatus: migrating ====================
-- create_enum("eh_released_inventory_status", ["rejected", "pending", "allocated", "released", "transferred"])
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
no implicit conversion of Symbol into Integer/app/vendor/bundle/ruby/2.0.0/gems/power_enum-2.8.0/lib/power_enum/schema/schema_statements.rb:84:in `[]'
/app/vendor/bundle/ruby/2.0.0/gems/power_enum-2.8.0/lib/power_enum/schema/schema_statements.rb:84:in `create_enum'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:662:in `block in method_missing'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:632:in `block in say_with_time'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:632:in `say_with_time'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:652:in `method_missing'
/app/db/migrate/20141119113015_create_released_inventory_status.rb:3:in `change'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:606:in `exec_migration'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:590:in `block (2 levels) in migrate'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/migration.rb:589:in `block in migrate'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/connection
迁移文件:
class CreateReleasedInventoryStatus < ActiveRecord::Migration
def change
create_enum("eh_released_inventory_status", ["rejected", "pending", "allocated", "released", "transferred"])
end
end
我也在使用以下 gem:
gem 'power_enum'
【问题讨论】:
-
你看过方法签名和文档吗? Here is the source。它正在寻找
table_name,然后是Hash而不是Array,这是你的问题。源调用[]并带有一个符号以提取选项,但您传递了一个Array,其中[]想要一个Integer。 -
def change create_enum("eh_released_inventory_status" => ["rejected", "pending", "allocated", "released", "transferred"]) 结束
-
这不是它正在创建的列,它是一个表。这些未列出的选项在其中传递,例如
create_enum :released_inventory, :name_column => :status实际上会创建一个名为released_inventories的表,其中有一列名为status。 -
感谢engineermnsky!这就是为什么我对如何将其转换为哈希感到困惑的原因。请指教!干杯!!
-
我想我找到了解决您问题的方法,但我还没有测试过。请参阅下面的答案。
标签: ruby-on-rails ruby-on-rails-4 heroku