以下是我的模型:
Class Audition
belongs_to :video
end
Class Video
has_one :audition
end和我的工厂:
Factory.define :video do |v|
v.filename {Sham.filename}
v.video_url {Sham.url}
end
Factory.define :audition do |a|
a.video {|a| a.association(:video)}
a.label {Sham.label}
end我怎么才能创建一个有试镜机会的视频工厂,
我的意思是,能够:
v = Factory.create(:video)
v.audition # I'd like this to be not nil !因为我的视频上有一个观察者试图从视频对象访问试镜
我尝试了几种方法,但我总是以堆栈级别太深或试听为零而结束。
你有什么想法吗?
谢谢,迈克
发布于 2010-02-11 04:53:23
如果是这种情况,我会将关联添加到另一个工厂中:
Factory.define :video do |v|
v.filename {Sham.filename}
v.video_url {Sham.url}
v.audition {|v| v.association(:audition)}
end然后你可以这样做
v = Factory(:video) # This will now have an audition
a = v.audition # This should not be nil和
a = Factory(:audition) # An audition without a video, if that's possible?在测试中创建工厂时,您还可以根据需要覆盖任何关联,即:
v = Factory(:video, :audition => Factory(:audition))
v = Factory(:video, :audition => nil)希望我所说的是有意义的,是真的,哈哈。让我们知道你的进展如何。
发布于 2020-08-19 17:21:00
在2020年,答案是在其中一个工厂上使用带有after create操作的特征。
trait :with_audition do
after :create do |video|
create(:audition, video: video)
end
endhttps://stackoverflow.com/questions/2238580
复制相似问题