昨日、最初のRailsプロジェクトを開始しました。私のアプリケーションには 2 つの多対多 (has_and_belongs_to_many) の関係がありました。モデルのゲームとチームの間に 1 つ、モデルの統計と結果の間にもう 1 つありました。これは、移行を使用して結合テーブルを自分で作成することで、すべて正常に機能していました。
次に、統計と結果の関係を多対多にするのではなく、何対多にするかを決定したので、次の移行を実行し、関係を 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 が発生するため、新しい 1 対多の関係が機能しないだけでなく、ゲームやチームとの以前の作業中の多対多の関係が機能しなくなります。現在も壊れています。以前は Game.fine(0).teams を呼び出して結果を見つけて表示することができましたが、今では NoMethodError も取得します。何かご意見は?私はかなり迷っており、どんな助けも素晴らしいでしょう。