鉴于两个类,Apple和Orange:
def class Apple < ActiveRecord::Base
has_and_belongs_to_many :oranges
end
def class Orange < ActiveRecord::Base
has_and_belongs_to_many :apples
end
Run Code Online (Sandbox Code Playgroud)
使用t.integer在连接表中定义外键有什么区别:
create_table :apples_oranges, :id => false do |t|
t.integer :apple_id
t.integer :orange_id
end
Run Code Online (Sandbox Code Playgroud)
并使用t.references在连接表中定义外键:
create_table :apples_oranges, :id => false do |t|
t.references :apple
t.references :orange
end
Run Code Online (Sandbox Code Playgroud)
我看过两者,它们似乎是可以互换的.只是想确保没有一些我遗漏的微妙/魔法.
哦,我在Rails 3.2上使用MySQL
http://guides.rubyonrails.org/migrations.html#special-helpers
本身没有魔力.如果您愿意,可以使迁移更具可读性,更易使用,如果您使用多态,则还要添加类型列.所以,或者,但参考更好,只是因为它.