2011-01-19 3 views

答えて

8

結果は特定のケースで同じです。あなたは正しいです。しかし、references:polymorphic => trueオプションを許可します。このオプションは自動的にfoo_type列を表の文字列として作成します。

意味的に、referencesはあなたの移行がより良いデータベース内のテーブル間の関係を反映させるしようとしている場合は、より良いです。

2

@マイクの答えは、referencesの意味をよく説明しています。ただし、移行をAR関連にあまり近づけない方がよい場合もあります。特に、バージョン管理などからアプリを更新する前に、移行を実行する場合、アプリをデプロイする場合、あらゆる種類のピクルスにアクセスできます。それはあなたが参照は危険なことができることを示唆している

+0

:-)あなたが刺されるまで、それは大したことではないのか?どんな種類の漬け物が私に入るかもしれないかの例を挙げることができますか? – kdt

+1

一般的に、あなたの移行とモデル・コードの更新は、同じバージョン管理に含まれていないコミット場合、これは問題につながることができ、あるいは、例えば、あなたは関連性についてのあなたの心を後で変更してのカーブの後ろにあまりにも遠くのマシンを更新する必要がある場合あなたの開発。だから、 'references'を使用していますので、ARモデルの団体からの外部キー名を決定しmigration1を持っていると思います。後で、新しいものでその移行を元に戻し、コードから関連付けを削除することにします。さて、そのスキーマ任意のマシンは、関連付けがなくなったため、マイグレーションを実行することはできません2世代古いです。 – noodl

+0

私はそれがちょっと混乱していることを知っています。実際にあなたを傷つけるまで心配するべきではありません:-) – noodl

関連する問題