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