В настоящее время я пытаюсь заполнить базу данных разработки проекта кучей поддельных данных, чтобы смоделировать, как она будет выглядеть и работать с сотнями статей / пользователей.Я искал различные драгоценные камни, чтобы выполнить задачу - например, 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
Отлично работает ... для текстовых данных.Тем не менее, у всех пользователей есть аватар, который можно загрузить через приложение Paperclip, а также все обычные материалы имеют вложения в виде миниатюр таким же образом.
Я понимаю, что гем Populator просто делает прямое заполнение базы данных, а недля этого обязательно нужно пройти валидацию ActiveRecord .. поэтому я бы предположил, что Paperclip не сможет работать, чтобы сгенерировать все разные эскизы и необходимые (и загруженные в надлежащий каталог) для аватара, если я просто заполнил поле с помощью filepath в грабляхЗадача выше.
Есть ли способ заполнить поддельные изображения, с помощью Populator или другим способом?Или, может быть, способ указать грабли задачу на каталог изображений на моем жестком диске, чтобы автоматически генерировать случайные миниатюры для каждой записи?Пытался найти способ поиска в Google, но не нашел много информации по этому вопросу.
ОБНОВЛЕНИЕ
Окончательное решение, основанное на образе мышления 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 для всех записей.