Ruby on Rails и db: fixtures: load - можно ли игнорировать некоторые модели? - PullRequest
1 голос
/ 28 января 2010

У меня есть две базы данных, используемые в приложении Ruby on Rails; одна - это база данных для приложения, а вторая - независимая база данных, над которой Rails не предоставляется контроль.

Проблема в том, что при загрузке приборов в dev он пытается выполнить операторы DELETE для таблиц в независимой базе данных из соединения с базой данных dev, что, очевидно, приводит к ошибкам.

Я не хочу, чтобы Rails пытался делать НИЧЕГО, но читал независимую базу данных - особенно я не хочу, чтобы она пыталась удалить таблицы.

Есть ли простой способ сообщить Rails игнорировать модели для второй базы данных при загрузке приборов?

ОБНОВЛЕНИЕ: Для пояснения Rails, кажется, считает, что таблицы из независимой базы данных являются частью соединения разработки, хотя я указал правильное соединение в классе модели, используя establish_connection. В качестве еще одного примечания, все классы моделей работают точно так, как требуется от script/console.

Ответы [ 4 ]

2 голосов
/ 28 января 2010
rake db:fixtures:load RAILS_ENV=testing

выполнит работу для базы данных, настроенной как testing в вашем database.yml

1 голос
/ 15 апреля 2010

Я думаю, что вы также можете сделать это, добавив все таблицы в независимой базе данных в ActiveRecord :: SchemaDumper.ignore_tables в environment.rb, например:

ActiveRecord::SchemaDumper.ignore_tables = ['independent_db_table1', 'independent_db_table2']
1 голос
/ 29 января 2010

Удалите файл model_name.yml из каталога test/fixtures, и Rails не будет пытаться удалить эти таблицы.

Еще лучше, удалите все свои *.yml файлы и stop , используя приборы полностью.

0 голосов
/ 29 января 2010

Хорошо ... моя проблема заключалась в том, что я использовал script/generate для создания моделей из вторичной базы данных, которая также создала файлы фикстур, схем, тестов и миграций. Я удалил файлы схемы, теста и миграции, но не удалил сгенерированные приборы (это были пустые файлы), так как я не думал, что они создали какие-либо.

После удаления всех файлов (включая модели) из вторичной базы данных и повторного запуска миграций для базы данных dev, я добавил обратно только файлы моделей и базу данных в databases.yml из вторичного БД, который решил проблему.

Я до сих пор не могу объяснить, почему rake-задачи Rails выглядели не в той базе данных, и я немного разочарован добавлением rails таблицы schema_migrations во вторичную базу данных, которая, очевидно, не нужна.

Однако, теперь это работает.

...