2009-10-02 26 views
6

を追加するためのダウン移行はどのようなものですI folowing移行を持っているが、これで何が悪いdown方法多型参照

change_table :addresses do |t| 
    t.references :addressable, :polymorphic => true 
end 

答えて

2

何が問題なのですか?

def self.down 
    remove_column :addresses, :addressable_type 
    remove_column :addresses, :addressable_id 
end 
+0

あなたはremove_column:addresses、:addressableが正しくないと言っていますか? – Damian

+0

ええ..これは正しい解決策です – amitkaz

+0

ダミアン:いいえ、いくつかのSQLブラウザーでテーブルを見るだけで、2つの列が表示されます。 –

-2

で使用するのか分からないのですか?

def self.down 
    remove_column :addresses, :addressable 
end 
+0

は、私はそれが可能だろうと思った厥が、これは私が多型モデルを使用していたし、実際にそれが remove_columnすべきではない – Damian

+0

を混同してしまったの初めてです:、アドレス:アドレス指定可能 – Damian

+0

おっと、あなたまったく正しい。私は、メモリに行くのではなく、まずドキュメントをチェックしておくべきだった。 –

12

実際、

change_table :addresses do |t| 
    t.remove_references :addressable 
    end 

はありません、ビットrailsierでしょうか?

編集:エベンヘールが指摘するように

change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 

はこれを行うには正しい方法です。乾杯!

+1

これにより、addressable_type列が残されます。それはt.remove_references:addressable、:polymorphic => true –

+0

@EbenGeerさんのコメント – Arjan

6
def self.down 
    change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 
end 
2
class RemoveAddressableFromAddresses < ActiveRecord::Migration 
    def change 
    remove_reference :addresses, :addressable, polymorphic: true, index: true 
    end 
end 
+0

が含まれていれば、私はこの回答をupvoteしますあなたのコードが何をし、どのようにこの質問に答えるかを説明してください。 – Bond