t.模型中迁移vs belongs_to的参考?

时间:2013-04-30 22:05:17

标签: ruby-on-rails activerecord

我正在阅读Rails指南,我找到了这些代码行:

  class CreateComments < ActiveRecord::Migration
     def change
       create_table :comments do |t|
          t.string :commenter
          t.text :body
          t.references :post

          t.timestamps
       end

       add_index :comments, :post_id
     end
 end

我还阅读了Michael Hartl的书,Rails Tutorial,我没有找到任何关于上面代码中使用的“t.references”的内容。 它有什么作用?在Michael的书中,我在模型中使用了has_many和belongs_to关系,并且在迁移中没有使用任何内容(不是事件t.belongs_to)。

2 个答案:

答案 0 :(得分:28)

这是Rails的最新成员,所以你提到的书可能没有涉及。您可以在the migration section的Rails指南中阅读相关内容。

当您使用生成时,例如

rails generate model Thing name post:references

...迁移将为您创建外键字段,以及创建索引。这就是t.references的作用。

你可以写

rails generate model Thing name post_id:integer:index

得到了相同的最终结果。

答案 1 :(得分:6)

请参阅Rails指南的this section

在您的情况下,t.references会在post_id表格中创建comments列。这意味着评论属于发布,因此在Comment模型中您必须添加belongs_to :post并在帖子模型中添加:has_many :comments