Создание загрузки изображений скрепок с поддельными данными - Ruby on Rails Populator / Faker Gems

В настоящее время я пытаюсь заполнить базу данных разработки проекта кучей фальшивых данных, чтобы смоделировать его внешний вид и работу с сотнями статей / пользователей. Я искал разные драгоценные камни для выполнения этой задачи - например, Factory Girl, но документации было очень не хватало, и я ее не понимал - но в итоге использовал драгоценные камни Populator и Faker и выполнил следующую задачу граблей ...

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 просто выполняет прямое заполнение базы данных и не обязательно проходит проверку ActiveRecord для этого ... поэтому я предполагаю, что Paperclip не может запустить, чтобы сгенерировать все различные эскизы и необходимые (и загруженные в соответствующий каталог) для аватара, если я просто заполнил поле с помощью пути к файлу в задаче rake выше.

Есть ли способ заполнить поддельные изображения с помощью Populator или другой путь? Или, возможно, способ указать задаче rake на каталог стоковых изображений на моем жестком диске для автоматического создания случайных миниатюр для каждой записи? Поискал способ в 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 во все записи.

19
задан Brian Tompsett - 汤莱恩 29 December 2015 в 15:56
поделиться