移行でreferences :foo
を使用すると、生成される列はfoo_id
となります。実際にreferences :foo
を実行してからinteger :foo_id
を実行するだけの違いはありますか?おそらく、データベースレベルで関係を強化するために何かが進んでいるのでしょうか?Rails: 'references:foo'と 'integer:foo_id'に違いはありますか?
6
A
答えて
8
結果は特定のケースで同じです。あなたは正しいです。しかし、references
は:polymorphic => true
オプションを許可します。このオプションは自動的にfoo_type
列を表の文字列として作成します。
意味的に、references
はあなたの移行がより良いデータベース内のテーブル間の関係を反映させるしようとしている場合は、より良いです。
2
@マイクの答えは、references
の意味をよく説明しています。ただし、移行をAR関連にあまり近づけない方がよい場合もあります。特に、バージョン管理などからアプリを更新する前に、移行を実行する場合、アプリをデプロイする場合、あらゆる種類のピクルスにアクセスできます。それはあなたが参照は危険なことができることを示唆している
関連する問題
- 1. Rails 3では、=とassign_attributesに違いはありますか?
- 2. $ @と "$ @"に違いはありますか?
- 3. Rails 3と3.2には大きな違いがありますか?
- 4. winformとWPFのResources.resxとSettings.settingに違いはありますか?
- 5. `pk`と` id`のどこかに違いはありますか?
- 6. PHPでは 'print'と 'echo'に違いはありますか?
- 7. AddTransient:違いはありますか?
- 8. IE8とFirefox3のボックスモデルに違いはありますか?
- 9. HAVINGとエイリアスのパフォーマンスに違いはありますか?
- 10. window.localStorageとlocalStorageの間に違いはありますか?
- 11. 即時に== trueと!= falseの違いはありますか?
- 12. "Read-Host -Prompt"と "Read-Host"に違いはありますか?
- 13. gluLookAt()とglFrustum()に違いはありますか?
- 14. EasyMockの ".andReturn(...)。anyTimes()"と ".andStubReturn(...)"に違いはありますか?
- 15. on_exit()関数とatexit()関数に違いはありますか?
- 16. -xとx * -1.0fの間に違いはありますか?
- 17. AES_128_CBCとAES_128_CBC_SHAアルゴリズムに違いはありますか?
- 18. Lisp: 'nilとnilの間に違いはありますか?
- 19. DB_DOUBLEとdbDoubleに違いはありますか?
- 20. "margin:0 auto;"の間に違いはありますか?と "margin:auto;"
- 21. 「セッションシークレット」と「セッションキー」に違いはありますか?
- 22. ノード* nextとノード* nextに違いはありますか?
- 23. children [0]とfirstElementChildに違いはありますか?
- 24. .JPGと.jpgに違いはありますか?
- 25. Forthボキャブラリーと単語リストには違いがありますか?
- 26. 場所と参加者に違いはありますか?
- 27. 2xと2 * xに違いはありますか?
- 28. ラムダ関数で[=]と[&]の間に違いはありますか?
- 29. Silverlight - C#とVB.netイベントハンドラのパフォーマンスに違いはありますか?
- 30. **コピー**と** addAll **には違いがありますか?
:-)あなたが刺されるまで、それは大したことではないのか?どんな種類の漬け物が私に入るかもしれないかの例を挙げることができますか? – kdt
一般的に、あなたの移行とモデル・コードの更新は、同じバージョン管理に含まれていないコミット場合、これは問題につながることができ、あるいは、例えば、あなたは関連性についてのあなたの心を後で変更してのカーブの後ろにあまりにも遠くのマシンを更新する必要がある場合あなたの開発。だから、 'references'を使用していますので、ARモデルの団体からの外部キー名を決定しmigration1を持っていると思います。後で、新しいものでその移行を元に戻し、コードから関連付けを削除することにします。さて、そのスキーマ任意のマシンは、関連付けがなくなったため、マイグレーションを実行することはできません2世代古いです。 – noodl
私はそれがちょっと混乱していることを知っています。実際にあなたを傷つけるまで心配するべきではありません:-) – noodl