如何使用制作宝石

时间:2016-06-08 22:08:16

标签: ruby-on-rails ruby ruby-on-rails-4

好的,请耐心等待,因为我从未在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相册创建一个标题,但没有任何照片......

么?

1 个答案:

答案 0 :(得分:3)

在种子文件中,只需使用:

Fabricate :gallery
Fabricate :photo

如果你想在你的画廊制作者中添加照片(比方说5张照片):

Fabricator(:gallery) do
    title { Faker::Book.title }
    photos(count: 5)
end

Fabricator了解Rails关联,因此它将使用照片制作者创建这些照片。

希望这有帮助。