0

所以我昨天才开始我的第一个 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。有什么想法吗?我很迷茫,任何帮助都会很棒。

4

1 回答 1

0

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

于 2009-01-23T18:35:28.540 回答