尝试删除rails中的has_and_belongs_to_many关系

时间:2009-01-23 18:01:07

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

所以我昨天刚刚开始了我的第一个铁轨项目。我的应用程序中有两个多对多(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

然后,当我这样做时,不仅新的一对多关系不起作用,因为我在调用say Result.find(0).stat时得到NoM​​ethodError,但现在我之前的工作多对多关系游戏和团队现在也被打破了。我以前能够调用Game.fine(0).teams只是查找并查看结果,现在我也得到NoM​​ethodError。有什么想法吗?我很失落,任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

我刚才意识到我拥有belongs_to:stats而不是单数形态。我修复了这个并重新加载了服务器,现在一切正常。不管怎样,谢谢阿比。