【问题标题】:Trying to remove a has_and_belongs_to_many relationship in rails试图删除 rails 中的 has_and_belongs_to_many 关系
【发布时间】:2009-01-23 18:01:06
【问题描述】:

所以我昨天刚刚开始了我的第一个 Rails 项目。我的应用程序中有两个多对多(has_and_belongs_to_many)关系。我在模型游戏和团队之间有一个,另一个在模型统计数据和结果之间。通过迁移自己创建连接表,这一切都很好。

然后我决定我不想让统计/结果关系是多对多的,而是多对多的关系,所以我运行了以下迁移并将关系切换到 has_many 和 belongs_to:

class FixingResultStatRelationship < ActiveRecord::Migration
  def self.up
    add_column :results, :stat_id, :integer
    drop_table "results_stats"
  end

  def self.down
   remove_column :results, :stat_id
   create_table "results_stats", :id => false do |t|
      t.column "result_id", :integer
      t.column "stat_id", :integer
    end
    add_index "results_stats", "result_id"
    add_index "results_stats", "stat_id"
  end
end

然后,当我这样做时,不仅新的一对多关系不起作用,因为我在调用说 Result.find(0).stat 时得到 NoMethodError,而且现在我以前的工作多对多关系与游戏和团队现在也被打破了。我以前可以调用 Game.fine(0).teams 来查找并查看结果,现在我也得到了 NoMethodError。有什么想法吗?我很迷茫,任何帮助都会很棒。

【问题讨论】:

  • 你也可以从你的模型中发布你的关联吗?

标签: ruby-on-rails many-to-many has-and-belongs-to-many


【解决方案1】:

我刚刚意识到我有 belongs_to :stats 而不是单数 stat。我解决了这个问题并重新加载了服务器,现在一切正常。不过还是谢谢 Abie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多