違いは何ですか 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
ソースコード を見ると、まったく同じことができます-belongs_to
はreference
のエイリアスです:
def references(*args)
options = args.extract_options!
polymorphic = options.delete(:polymorphic)
args.each do |col|
column("#{col}_id", :integer, options)
column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
end
end
alias :belongs_to :references
これは、コードを読みやすくするための単なる方法です。belongs_to
必要に応じて移行で使用し、他の種類の関連付けについてはreferences
に固執します。