更改关联并删除相应的迁移

时间:2015-01-08 01:12:22

标签: ruby-on-rails ruby

我是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和任何酒吧之间建立任何联系。

我可以执行以下操作以重新开始(更改关联并删除迁移文件):

  1. 使用' rake db:rollback'

  2. 删除联接表迁移的文件(即timestamp_create_bars_foos.rb文件)

  3. 更改' has_and_belongs_to_many'在foo到' has_many',在bar到' belongs_to'

  4. 运行:' rails生成迁移CreateFoosBars'

  5. 运行:' rake db:migrate'

  6. 如果没有,我该怎么做才能对关联进行上述修改?

    提前致谢!

1 个答案:

答案 0 :(得分:0)

您列出的步骤看起来不错。

唯一突出的是CreateFoosBars中再次Step 4 : rails generate migration CreateFoosBars'的意图。

由于已经创建了foosbars表,并且这是一个has_many关系,您只需要在{{1}中添加foo的引用表,而不是创建一个新表。

有些事情:

bars

建议审核Rails 3 migrations: Adding reference column?以确定迁移应该做什么。