В настоящее время я пытаюсь заполнить базу данных разработки в проекте кучей поддельных данных, чтобы имитировать, как она будет выглядеть и работать с сотнями статей/пользователей. Я искал разные драгоценности, чтобы выполнить эту задачу, например, Factory Girl, но документации было очень не хватает, и я ее не понял, но в итоге использовал камни Populator и Faker и выполнил следующую команду rake...
namespace :db do
desc "Testing populator"
task :populate => :environment do
require "populator"
require "faker"
User.populate 3 do |user|
name = Faker::Internet.user_name
user.name = name
user.cached_slug = name
user.email = Faker::Internet.email
user.created_at = 4.years.ago..Time.now
end
end
end
Отлично работает... для текстовых данных. Тем не менее, у всех пользователей есть аватар, который может быть загружен с помощью приложения "Скрепка", а также все обычные материалы имеют прикрепленные файлы в виде миниатюр одинаковым образом.
Я понимаю, что в Populator gem просто выполняется простая группировка базы данных и не обязательно выполняется проверка ActiveRecord, чтобы сделать это. Поэтому я бы предположил, что Paperclip не может запускаться для создания всех различных эскизов и необходимости (и загружается на правильный каталог) для аватара, если я просто заполнил поле файловой дорожкой в вышеупомянутой задаче.
Есть ли способ заполнить поддельные изображения, через Populator или по-другому? Или, может быть, способ указать задачу рейка в каталоге стоковых изображений на моем жестком диске для автоматического генерации случайных эскизов для каждой записи? Получил охоту на Google, но не получил много информации по этому вопросу.
UPDATE
Окончательное решение, основанное на линии мышления pwnfactory...
namespace :db do
desc "Testing populator"
task :populate => :environment do
require "populator"
require "faker"
User.populate 3 do |user|
name = Faker::Internet.user_name
user.name = name
user.cached_slug = name
user.email = Faker::Internet.email
user.created_at = 4.years.ago..Time.now
end
User.all.each { |user| user.avatar = File.open(Dir.glob(File.join(Rails.root, 'sampleimages', '*')).sample); user.save! }
end
end
Он в основном зацикливается и загружает аватары из каталога sampleimages во все записи.