Фабричная девушка и has_one - PullRequest
       20

Фабричная девушка и has_one

6 голосов
/ 10 февраля 2010

Вот мои модели:

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 !

Поскольку на моем видео есть наблюдатель, который пытается получить доступ к прослушиванию с видеообъекта

Я пробовал несколько вещей, но я всегда заканчивал слишком глубоким уровнем стека или прослушиванием ноль.

У вас есть идея?

Спасибо, Mike

1 Ответ

7 голосов
/ 10 февраля 2010

В таком случае я бы добавил ассоциацию в другую фабрику:

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)

Надеюсь, то, что я сказал, имеет смысл и верно, лол. Дайте нам знать, как вы поживаете.

...