【发布时间】:2011-04-26 15:13:09
【问题描述】:
我目前正在尝试用一堆假数据填充项目的开发数据库,以模拟数百篇文章/用户的外观和操作方式。我研究了不同的 gem 来完成这项任务 - 例如 Factory Girl,但文档非常缺乏,我没有得到它 - 但最终使用 Populator 和 Faker gem 并完成了以下 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 任务指向我硬盘驱动器上的库存图像目录的方法,以便为每条记录自动生成随机缩略图?在 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目录中循环并上传头像。
【问题讨论】: