テーブル間の関連付けに対して SQL が生成されるため、Oracle エラーが発生します。複合主キーは関係ありませんが、composite_primary_keys gem を追加する前はこの問題は発生していませんでした。
アソシエーションの外部キーは、次のように SQL に追加されています。
SELECT "FOO".* FROM "FOO" WHERE "FOO"."Bar_id" = 1234
列「bar_id」は存在します。ただし、このように "Bar_id" を引用符で囲むと、Oracle はこれを真剣に受け止め、すべて大文字と小文字を区別します。
これを生成していた場合のみ:
SELECT "FOO".* FROM "FOO" WHERE "FOO".Bar_id = 1234
またはこれ:
SELECT "FOO".* FROM "FOO" WHERE "FOO"."BAR_ID" = 1234
大丈夫です。
表示されるエラーは次のとおりです。
ActiveRecord::StatementInvalid: NativeException: java.sql.SQLException: ORA-00904: "FOO"."Bar_id": invalid identifier
私は実際にこれを修正 (「ハッキング」) し、composite_primary_keys gem のバージョン 3.1.0 で使用しましたが、4.0.0 にアップグレードする必要があるため、コードの変更が非常に重要であるため、以前使用していた単純なハックはもはや必要ありません。とても明白です。
これを修正する方法はありますか?
使用されたもののバージョン:
- 複合主キー 4.0.0
- アクティブレコード 3.1.0
- activerecord-oracle_enhanced-adapter 1.4.0
- jruby 1.6.3