我对如何在ROR中创建联接表感到有些困惑。
假设有2个表:
为了创建一个联合表user_book
,我的初步印象是你这样做了:
rails g migration user_book
但是我被告知要创建一个实际的连接表,我会生成一个实际的模型:
rails g model user_book
这是对的吗?
如果第二个是正确的,那么在我创建它之后,我打开它并将book_id
和user_id
添加到迁移的文件中,然后运行{{1}命令。它是否正确?
编辑:
只想添加
用户模型将具有:rake db:migrate
书籍模型会有:has_many :books, through: :user_book
答案 0 :(得分:0)
如果您想使用has_many through:
,则需要table to handle that。以及表示该表的模型对象。
如何创建它(rails g model
或rails g migration
)并不重要。所有这些命令都是创建模型和迁移文件,或只创建迁移文件。就个人而言,我会做rails g model
,因为你需要两者。
您只需添加一个包含2个ID user_books
和user_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