私は既存のRailsサイトでメンテナンス作業を行っていますが、多対多の関連付けに起因するいくつかの問題が発生しています。サイトは当初has_and_belongs_to_many
、ビジネスロジックでより複雑になったいくつかの関係を使用して構築されたようです。そのため、has_many :through
代わりに関係テーブルの追加フィールドをサポートするために使用する必要があります。ただし、最初にHABTMに使用された結合テーブルには主キーがないため、を使用した個別の関係モデリングをサポートするために主キーを追加する必要がありhas_many :through
ます。
大量のデータを含む既存のテーブルに主キーを追加するための最良の方法は何ですか?私がやろうとしていることをする別の方法はありますか?
ちなみに、システムはOracle上で実行されています。
ありがとう!
ジャスティン
UPDATE 11/9/09 3:58 pm:私はOracleの専門家ではなく、Oracleのバージョンのnot null、auto-incrementなどの荒野で迷子になっています。最初は、主キーとして新しいフィールドを追加することで、MikeとCoreyが推奨することを実行しようとしましたが、Oracleは、空でないテーブル(ORA-01758)にnull以外のフィールドを追加することを許可しませんでした。次に、データをSQLとしてエクスポートし、行を削除し、PKを追加してnull以外に設定してから、データをインポートしようとしましたが、「IDにNULLを挿入できません...」というエラーが発生し続けました。 (ORA-01400)。
最後に、Coreyがコメントで示唆しているように移行を使用しようとしましたが、データベースを手動で変更したときにOracleがスローしたのと同じエラーがrakeにヒットしました(「空でないテーブルにnull以外のフィールドを追加できません」)。テーブルをクリアし、移行を実行して(これは機能しました)、データを再インポートしようとしましたが、前回インポートしようとしたときに同じエラーが発生しました(「IDにNULLを挿入できません...」)。データを保存して、必要な主キーを追加するにはどうすればよいですか?レーキタスクを書く可能性が示唆されたことは知っていますが、その前にどのように進めるかはわかりません。何か案は?