2017-10-19 21 views
-1

新しいマシンでアプリケーションを起動して実行しようとしています。わずかに更新されたバージョンのRuby(2.3.4 vs 2.3.1)を使用している可能性があり、Railsバージョンは5.1.3です。ArrayからString-Railsへの暗黙的な変換なし

class AddDragAndDropRules < ActiveRecord::Migration[5.0] 
    def change 
    add_column :products, :fixture_location, :string, default: "none" 
    add_column :products, :attaches_to, :uuid, array: true, default: [] 
    end 
end 

問題rails db:migrate中:

はここに移動です。

エラー:エラーを発見することができ

== 20160928162420 AddDragAndDropRules: migrating ============================== 
-- add_column(:products, :fixture_location, :string, {:default=>"none"}) 
    -> 0.0142s 
-- add_column(:products, :attaches_to, :uuid, {:array=>true, :default=>[]}) 
rails aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

no implicit conversion of Array into String 
/Users/mike/api/db/migrate/20160928162420_add_drag_and_drop_rules.rb:4:in `change' 
bin/rails:9:in `require' 
bin/rails:9:in `<main>' 
TypeError: no implicit conversion of Array into String 
/Users/mike/api/db/migrate/20160928162420_add_drag_and_drop_rules.rb:4:in `change' 
bin/rails:9:in `require' 
bin/rails:9:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

誰ですか?

答えて

1

これは他の誰にとっても役立ちます。ある時点でプロジェクトがRails 5.1.3にアップグレードされ、UUID配列の移行がバグによって失敗する原因になりました。

問題はここ(https://github.com/rails/rails/issues/30539)で、5.1.2-5.1.3での回避策は、これを行うことです。

add_column :products, :attaches_to, :uuid, array: true, default: '{}' 

は、上記5.1.4とで修正される予定です。

関連する問題