違いは何であるt.references
とはt.belongs_to
?なぜこれら2つの異なる単語があるのですか?彼らは同じことをしているように思えますか?いくつかのGoogle検索を試しましたが、説明は見つかりませんでした。
class CreateFoos < ActiveRecord::Migration
def change
create_table :foos do |t|
t.references :bar
t.belongs_to :baz
# The two above seems to give similar results
t.belongs_to :fooable, :polymorphic => true
# I have not tried polymorphic with t.references
t.timestamps
end
end
end
1
彼らは同じように機能します-それはそんなに悪いことですか?リファレンスは外部キー列を挿入します。代わりにbelongs_toを使用して、移行を読みやすくすることができます。詳細については、guides.rubyonrails.org / migrations.htmlを参照してください。
—
muffinista
それは悪いことではありません。それらが同じように機能するのか、別の方法で機能するのかについて混乱しました。特に、それらが同じように機能することを示すドキュメントが見つからないためです。http://guides.rubyonrails.org/migrations.htmlもその点については明確ではありません。
—
Tornskaden、2011年
これはおそらく下位互換性のため
—
煉瓦工
references
であり、レールの将来のリリースでは非推奨になり削除される予定です。これについて私の言葉を言わないでください。それは単なる知識に基づく推測です。
「他のヘルパーは(belongs_toのようにも利用可能)の参照と呼ばれている最も単純な形式ではそれだけでいくつかの読みやすさを追加します。」 -ガイドから
—
muffinista
また、ここではソースコードはだ- belongs_toのは、参照用のストレート別名であるgithub.com/rails/rails/blob/...
—
muffinista