これをすべての問題の解決策として提案しているわけではありませんが、この場合、独自の rake タスクをハックして、列の型を文字列に変更することができます。
namespace :db do
desc "Change column type"
task :test_setup do
Rake::Task['db:test:prepare'].invoke
Rails.env = ENV['RAILS_ENV'] = 'test'
ActiveRecord::Migration.change_table :YOUR_TABLE_NAME do |t|
t.change :YOUR_ENUM_COLUMN_NAME, :string, :limit => 100
end
end
end
このファイルは、次のように lib/tasks に配置されます。次に、実行するwhatever_you_want_to_call_it.rake.
代わりに実行し、enum 列をここでのニーズを満たすと思われる に変更します。間違っている場合は修正してください。rake db:test:prepare
rake db:test_setup
rake db:test:prepare
varchar(100)
私はこれをテストしていませんが、ここでも test:units への呼び出しをプラグインできるはずですRake::Task['test:units'].invoke
。
繰り返しになりますが、このようなハッキングは、データ型とデータベースによる処理方法を実際に変更しているため、一般的にお勧めするものではありませんが、これはあなたが要求したものなので、私は試して助けたいと思いました.