好的,请耐心等待,因为我从未在Rails中测试过(字面意思)。
我试图使用Faker gem来填充一些数据,但由于关联是因为遇到了麻烦:
class Gallery < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
has_attached_file :photo, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/
belongs_to :gallery
end
所以,有人告诉我使用Fabrication
宝石。就像我说的,从来没有做过任何测试...所以不确定如何实现这个gem所以我可以创建一些虚拟信息。
这是我到目前为止所做的:
规格/制造者/ gallery_fabricator.rb
Fabricator(:gallery) do
title { Faker::Book.title }
end
规格/制造者/ photo_fabricator.rb
Fabricator(:photo) do
title { Faker::Book.title }
description { Faker::Lorem.paragraph }
end
这就是我在 seeds.rb
中所拥有的Fabricate :gallery do
title { Faker::Book.title }
end
Fabricate :photo do
title { Faker::Superhero.name }
description { Faker::Lorem.paragraph }
photo { Faker::Placeholdit.image }
end
它有效,因为它每次运行rake db:seed
时都会为Gallery相册创建一个标题,但没有任何照片......
么?
答案 0 :(得分:3)
在种子文件中,只需使用:
Fabricate :gallery
Fabricate :photo
如果你想在你的画廊制作者中添加照片(比方说5张照片):
Fabricator(:gallery) do
title { Faker::Book.title }
photos(count: 5)
end
Fabricator了解Rails关联,因此它将使用照片制作者创建这些照片。
希望这有帮助。