Productsテーブルがあり、列を追加したい:
t.references :imageable, :polymorphic => true
私はこれを行うために移行を生成しようとしました:
$ Rails generate migration AddImageableToProducts imageable:references:polymorphic
しかし、私は明らかにそれを間違っています。誰か提案をすることはできますか?ありがとう
移行の生成後に手動で配置しようとすると、次のようになりました。
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
それはまだ機能していません
私の知る限り、ポリモーフィックな関連付けのための組み込みジェネレータはありません。空の移行を生成し、必要に応じて手動で変更します。
Update:変更するテーブルを指定する必要があります。 this SO answer :
class AddImageableToProducts < ActiveRecord::Migration
def up
change_table :products do |t|
t.references :imageable, polymorphic: true
end
end
def down
change_table :products do |t|
t.remove_references :imageable, polymorphic: true
end
end
end
あなたがしようとしていることは、安定版のRailsにまだ実装されていないため、今のところBrandonの答えは正しいものです。ただし、この機能はRails 4で実装され、次のようにEdgeバージョンで既に利用可能です(これに応じて [〜#〜] changelog [〜#〜] ):
$ Rails generate migration AddImageableToProducts imageable:references{polymorphic}
次のこともできます。
class AddImageableToProducts < ActiveRecord::Migration
def change
add_reference :products, :imageable, polymorphic: true, index: true
end
end
あなたが試すことができます Rails generate migration AddImageableToProducts imageable:references{polymorphic}