Actualmente estoy intentando completar una base de datos de desarrollo en un proyecto con un montón de datos falsos, para simular cómo se verá y funcionará con cientos de artículos/usuarios. Busqué diferentes gemas para hacer la tarea, como Factory Girl, pero faltó documentación y no la obtuve, pero terminé usando las gemas Populator y Faker e hice la siguiente tarea de rake ...Generación de cargas de imágenes de Paperclip con datos falsos - Ruby on Rails Populator/Faker Gems
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
Funciona muy bien ... para datos basados en texto. Sin embargo, todos los usuarios tienen un avatar que se puede subir a través de archivos adjuntos de Paperclip, y todos los contenidos regulares tienen archivos adjuntos en miniatura de la misma manera.
entiendo la gema Populator simplemente hace una población directamente a la base de datos y no necesariamente corriendo a través de validaciones ActiveRecord hacer so..therefor asumiría Paperclip no puede funcionar para generar todas las diferentes miniaturas y necesitaba (y subido a el directorio apropiado) para el avatar si acabo de llenar el campo con un camino de archivo en la tarea anterior.
¿Hay alguna manera de poblar imágenes falsas, a través de Populator o de otra manera? ¿O tal vez una forma de señalar la tarea de rake en un directorio de imágenes de stock en mi disco duro para autogenerar miniaturas aleatorias para cada registro? Hizo una búsqueda en Google por un camino, pero no se ha encontrado mucha información sobre el tema.
ACTUALIZACIÓN
La solución final, basado en la línea de pwnfactory de pensar ...
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
Es básicamente un bucle de vuelta alrededor y subido por los avatares del directorio sampleimages en todos los registros.
Probé esto e inserté esa línea en mi tarea de rake (y creé el directorio de imágenes de muestra en mi proyecto de raíles propiamente) pero escupió "rake abortado! método indefinido' avatar = 'para # "al ejecutar la tarea. Dado que la base de datos divide las columnas en tres (avatar_file_name, avatar_content_type, avatar_file_size), esa podría ser la razón. –
Shannon
Debe utilizar el nombre que definió en su modelo, por ejemplo: ' clase Photo
acw
... Eso es lo que estoy haciendo, el archivo adjunto a mi modelo de Usuario se llama 'avatar' (has_attached_file: avatar). – Shannon