【发布时间】:2011-10-16 23:56:23
【问题描述】:
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
【问题讨论】:
-
它们的工作原理是一样的——这是一件坏事吗?引用为您插入一个外键列。您可以改用belongs_to 来使您的迁移更具可读性。有关详细信息,请参阅guides.rubyonrails.org/migrations.html。
-
并不是说这是一件坏事。只是对它们是否以相同或不同的方式工作感到困惑,因为我找不到具体说明它们工作相同的文档。 http://guides.rubyonrails.org/migrations.html 对此也不清楚。
-
这可能只是为了向后兼容,
references将在以后的 Rails 版本中被弃用和删除。不要相信我的话,这只是一个有根据的猜测。 -
“另一个助手被称为引用(也可以作为belongs_to使用)。它最简单的形式只是增加了一些可读性”——来自指南
-
这里也是源代码——belongs_to 是引用github.com/rails/rails/blob/…的直接别名
标签: ruby-on-rails rails-migrations