我目前正试图用一堆假数据来填充项目上的开发数据库,以模拟它将如何外观和操作数百篇文章/用户。我看着不同的宝石做任务 - 如工厂女孩,但文档是非常缺乏的,我没有得到它 - 但最终使用填充器和法克尔宝石和做了以下rake任务...用假数据生成回形针图片上传 - 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
适用于基于文本的数据。但是,所有用户都有一个可通过回形针附件上传的头像,以及所有常规内容都以相同的方式具有缩略图附件。
我明白填充器宝石只是做了直人口数据库,而不是一定要通过ActiveRecord的验证跑办so..therefor我会假设回形针不能运行产生各种不同的缩略图和需要(并上传到如果我刚刚在上面的rake任务中填充了一个文件路径,那么这个头像就是正确的目录。
有没有办法通过Populator或其他方式填充假图像?或者可能是一种方法,将rake任务指向硬盘上的库存图像目录,以便为每条记录自动生成随机缩略图?在Google上寻找某种方式,但没有提供有关该主题的许多信息。
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目录化身上的所有记录。
给了这个尝试,并在上面我的耙子任务中插入了该行(并在我的rails项目中创建了sampleimages目录),但它吐出了“rake aborted! 未定义的方法'avatar ='for#“运行任务。由于数据库将列分成三个(avatar_file_name,avatar_content_type,avatar_file_size),这可能是原因。 –
Shannon
2011-04-26 15:41:11
您必须使用您在模型中定义的名称,例如: 'class Photo
acw
2011-04-26 15:46:51
这就是我在做什么,我的用户模型的附件名为'avatar'(has_attached_file:avatar)。 – Shannon 2011-04-26 15:56:12