Ruby on Rails:如何编写迁移以添加对表的引用?

时间:2010-07-27 20:23:33

标签: ruby-on-rails

我有

add_column :foos, :bar_id, :integer

但是我可以做像

这样的事情
@foo.bar.name

而不是

Bar.find(@foo.bar_id)

我认为它在创建表时使用t.references完成了......但是如何在创建表后创建它呢?

4 个答案:

答案 0 :(得分:2)

请参阅迁移指南here

create_table :products do |t|
  t.references :category
end

这允许您在迁移中指定它,但您还需要使用 belongs_to ,并且模型中的 has_one has_many 属性。如果没有迁移来创建它,您可以真正做到这一点,因为您已经设置了外键ID。只需使用上述属性。

另见ActiveRecord guide

答案 1 :(得分:1)

您必须编辑相应的模型文件并添加例如belongs_to声明。这正是允许您调用@foo.bar.name

的原因

答案 2 :(得分:0)

为什么在迁移中需要这样做?为什么不能在迁移中添加bar_id字段,而不是在foo的模型中添加关联?

答案 3 :(得分:0)

如果您使用的是Rails 4.x,现在可以使用引用生成迁移,如下所示:

  

rails生成迁移AddUserRefToProducts用户:引用

就像你可以在rails guides

上看到的那样