我目前正在尝试用一堆假数据填充项目的开发数据库,以模拟数百篇文章/用户的外观和操作方式。我研究了不同的宝石来完成任务 - 例如 Factory Girl,但文档非常缺乏,我没有得到它 - 但最终使用了 Populator 和 Faker gems 并完成了以下 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 无法运行来生成所需的所有不同缩略图(并上传到正确的目录)对于头像,如果我只是在上面的 rake 任务中用文件路径填充该字段。
有没有办法通过 Populator 或其他方式填充假图像?或者也许有一种方法可以将 rake 任务指向硬盘驱动器上的库存图像目录,以便为每个记录自动生成随机缩略图?在谷歌上寻找一种方法,但没有找到关于这个主题的太多信息。
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 目录中上传头像。