Ограничения внешнего ключа не копируются в testdb во время рейка - PullRequest
1 голос
/ 15 марта 2011

Вот одна проблема, которую я не могу отладить.При выполнении граблей db:test:clone_structure внешние ключи не копируются из базы данных разработки в тестовую базу данных.Есть ли что-то, что мне не хватает?

1 Ответ

1 голос
/ 15 марта 2011

Ваша проблема в том, что Rails (или ActiveRecord) не понимает внешние ключи внутри базы данных, а также не понимает ограничения CHECK или что-то еще более необычное, чем уникальный индекс. С Rails обычно приятно работать, но иногда в Rails больше отношения, чем здравого смысла.

Существует Иностранец для добавления поддержки FK в ActiveRecord, но он не знает об Oracle. Возможно, вы сможете адаптировать поддержку PostgreSQL для Oracle, но я не знаю, как обойти Oracle, так что это может быть не очень хорошей идеей. Иностранец также не поддерживает ограничения CHECK (пока).

Быстрое решение состояло бы в том, чтобы сбросить FK и CHECK в виде необработанного SQL и вставить этот SQL в тестовую и производственную базы данных. Затем оберните быстрый сценарий вокруг того, что делает rake db:test:clone_structure с последующим копированием необработанного SQL FK и CHECK.

Извините, что не существует простого способа сделать это, но как только вы выйдете за пределы того, что фреймворк хочет сделать, вещи становятся уродливыми (и чем более всеобъемлющая фреймворк, тем уродливее становятся вещи). Немного SQL-споров, обернутых вокруг обычной команды rake, не так уж и неприятны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...