t.references
和t.belongs_to
之间有什么区别?
为什么我们有这两个不同的词?在我看来他们做同样的事情?
试过一些谷歌搜索,但没有找到解释。
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
答案 0 :(得分:139)
查看the source code,他们会做同样的事情 - 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
用于其他类型的关联。