我是ruby on rails的新手。我创建了一个多对多关联和迁移,如下所示:
Foo
模型中的:
has_and_belongs_to_many bars
Bar
模型中的:
has_and_belongs_to_many foos
并且联接表的迁移具有以下内容:
def change
create_table :foos_bars, id: false do |t|
t.references :foo
t.references :bar
end
end
现在我看到关联应该是一对多的:foo has many bars
。
我不知道上述迁移后是否生成了控制器,但我知道上述迁移的文件是在migrate文件夹中创建的最后一个文件。此外,我还没有在任何foo和任何酒吧之间建立任何联系。
我可以执行以下操作以重新开始(更改关联并删除迁移文件):
使用' rake db:rollback'
删除联接表迁移的文件(即timestamp_create_bars_foos.rb文件)
更改' has_and_belongs_to_many'在foo到' has_many',在bar到' belongs_to'
运行:' rails生成迁移CreateFoosBars'
运行:' rake db:migrate'
如果没有,我该怎么做才能对关联进行上述修改?
提前致谢!
答案 0 :(得分:0)
您列出的步骤看起来不错。
唯一突出的是CreateFoosBars
中再次Step 4 : rails generate migration CreateFoosBars'
的意图。
由于已经创建了foos
和bars
表,并且这是一个has_many
关系,您只需要在{{1}中添加foo
的引用表,而不是创建一个新表。
有些事情:
bars
建议审核Rails 3 migrations: Adding reference column?以确定迁移应该做什么。