【问题标题】:changing the association and deleting corresponding migration更改关联并删除相应的迁移
【发布时间】:2015-03-06 01:20:18
【问题描述】:

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

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

  1. 使用 'rake db:rollback'

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

  3. 将 foo 中的 'has_and_belongs_to_many' 更改为 'has_many',将 bar 中的 'belongs_to' 更改为 'belongs_to'

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

  5. 运行:'rake db:migrate'

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

提前致谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

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

    由于foosbars表已经创建,并且这是has_many关系,您只需在bars表中添加foo的引用,而不是创建新表.

    类似的东西:

    rails g migration add_foo_id_to_bar foo_id:integer
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多