私はいくつかの関連付けを持っており、重複キーとの関係でMySQLエラーを避けるために関連でuniq
オプションも使用しました。私の団体は、このようなものです:私は追加has_and_belongs_to_関連テーブルの一意索引で「重複エントリ」が生成されない
has_and_belongs_to_many :people, :uniq => true
インデックスは、私が使用して追加分割主キーです:assocationの両側に
add_index :table_name, [:key_1, :key_2], :unique => true
。しかし、オブジェクトを2回アソシエートしようとすると、MySQLによって生成されたMysql2::Error: Duplicate entry '1-9' for key...
エラーがスローされます。この問題に対処するスマートな方法はありますか?
私はいくつかの可能な解決策を考えましたが、それほどスマートではありません。 :insert_sql
オプションを使用して手動でINSERTクエリを変更することを考えましたが、これは20の関連テーブルで多くの作業になります。これに対処するより良い方法はありますか?
どのようにすることができ、データベースによって引っ掛かり競合状態の可能性があるように起こっているか注意してください物事を乾燥状態に保つために中央の位置でこれを行うのですか?私は20の異なる場所でこのエラーを再現したくない – davidb
この質問の新しいスレッドを開く=> http://stackoverflow.com/questions/8644577/how-to-rescue-exception-central-and-dry – davidb