我目前正試圖用一堆假數據來填充項目上的開發數據庫,以模擬它將如何外觀和操作數百篇文章/用戶。我看着不同的寶石做任務 - 如工廠女孩,但文檔是非常缺乏的,我沒有得到它 - 但最終使用填充器和法克爾寶石和做了以下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