Rails: загрузка файла в приспособление для заполнения БД (исходные данные)


Я ищу уже неделю. Я использую рельсы 3.

У меня есть раздел документов в моем приложении, и я хотел бы заполнить базу данных поддельными данными. До сих пор это было очень просто: просто добавьте a .файл YML в папке приспособления и все.

Теперь я хотел бы иметь файл fixture (.yml), который заполнит БД документами, когда я rake db:fixtures:load. Я просто не знаю, как этого добиться. Я искал функцию fixture_file_upload, но не думаю, что это правильный путь.

Любой идея? Заранее спасибо.

Edit: чтобы было совершенно ясно, я хотел бы загрузить документ, который я перечисляю в своем приспособлении для документов. Поэтому, когда я rake db:fixtures:load, документ фактически загружен.

3 3

3 ответа:

Обычно загрузка исходных данных выполняется с помощью rake db:seed, который просто выполняет ваш db/seed.rb. Там ты можешь делать все, что захочешь.

Если вы хотите повторно использовать свои светильники, вы можете просто загрузить их вручную:

require 'active_record/fixtures'
ActiveRecord::Fixtures.create_fixtures(Rails.root.join('test/fixtures'), 
                                       'your_yml_file')

Передайте переменную окружения FIXTURES

Предполагая, что у вас есть test/fixtures/documents.yml и что вы не возражаете против сглаживания данных в таблице документов, вы можете загрузить свое приспособление с помощью:

rake db:fixtures:load FIXTURES=documents

При желании вы также можете передать соответствующий RAILS_ENV для загрузки ваших данных во что-то другое, чем ваша база данных разработки, например, тест или производство. Но Сначала сделайте резервную копию своей базы данных. Опечатка может стереть ваш текущий набор данных.

Вы устанавливаете фиктивные данные для тестов или используете тест/фиктивные данные для загрузки поддельных данных разработки? Если это первый случай, то это трудно, потому что вы не хотите, чтобы тестировщик загружал кучу файлов между каждым тестом. Если последнее имеет место, то вы должны использовать rake db:seeds вместо этого. Это работает db / seeds.rb в контексте вашего приложения Rails. Используйте флаг среды для загрузки поддельных данных только в процессе разработки. Затем вы можете использовать API вашей библиотеки вложений, чтобы "загрузить" приложение. файлы.