加入Table Confusion - Ruby on Rails

时间:2015-04-21 21:34:46

标签: ruby-on-rails ruby join

我对如何在ROR中创建联接表感到有些困惑。

假设有2个表:

  • 用户

为了创建一个联合表user_book,我的初步印象是你这样做了:

rails g migration user_book

但是我被告知要创建一个实际的连接表,我会生成一个实际的模型:

rails g model user_book

这是对的吗?

如果第二个是正确的,那么在我创建它之后,我打开它并将book_iduser_id添加到迁移的文件中,然后运行{{1}命令。它是否正确?

编辑:

只想添加

用户模型将具有:rake db:migrate

书籍模型会有:has_many :books, through: :user_book

1 个答案:

答案 0 :(得分:0)

如果您想使用has_many through:,则需要table to handle that。以及表示该表的模型对象。

如何创建它(rails g modelrails g migration)并不重要。所有这些命令都是创建模型和迁移文件,或只创建迁移文件。就个人而言,我会做rails g model,因为你需要两者。

您只需添加一个包含2个ID user_booksuser_id的{​​{1}}表。

迁移看起来像这样:

book_id

模型看起来像这样:

class CreateUserBooks < ActiveRecord::Migration
  def change
    create_table :user_books do |t|
      t.references :user, index: true, foreign_key: true, null: false
      t.references :book, index: true, foreign_key: true, null: false
      t.timestamps null: false
    end
  end
end