Я получаю ошибку Oracle из-за того, что SQL генерируется для связи между таблицами. Сложный первичный ключ не задействован, но эта проблема не возникала перед добавлением гема Composit_primary_keys.
Внешний ключ ассоциации добавляется в 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
Я на самом деле исправил (читай, «взломал») это для версии 3.1.0 в файле cluster_primary_keys, но теперь, когда мне нужно перейти на 4.0.0, изменения в коде были настолько значительными, что простые хаки, которые я использовал ранее уже не так очевидны.
Есть идеи, как это исправить?
Используемые версии материала:
- композитный_применный_кейс 4.0.0
- activerecord 3.1.0
- activerecord-oracle_enhanced-adapter 1.4.0
- jruby 1.6.3