Фабрика огурца шаги и дополнительные ассоциации - PullRequest
2 голосов
/ 23 января 2011

У меня есть следующие модели:

class Person < ActiveRecord::Base
  belongs_to :family
end

class Family < ActiveRecord::Base
end

И следующие заводы:

Factory.define :person do |p|
  p.association :family
end

Factory.define :family do |f|
end

И я использую шаги огурца factory_girl, например:

Given the following people exist:
  | First name | Last name |
  | John       | Doe       |

Given the following people exist:
  | First name | Last name | Family             |
  | John       | Doe       | Name: Doe's family |

Я хотел бы создать людей без связанных семей, используя первую форму, а последнюю - для создания людей с семьями. Теперь у каждого человека есть семья. На самом деле, использование первой формы не удается, потому что у меня также есть validates_presence_of :name в Family классе.

Если я удаляю p.association :family из определения фабрики Person, последняя форма завершается ошибкой, потому что она пытается установить строку как связанную запись (она выполняет что-то вроде family = "Name: ...").

Возможно ли иметь необязательные ассоциации в шагах Cucumber, определенных factory_girl?

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Я бы создал другую фабрику, например:

Factory.define :orphan, :class => "Person" do |factory|
  # does not belong to a family
end

Затем используйте это в своей первой настройке:

Given the following orphans exist:
  | First name | Last name |
  | John       | Doe       |
1 голос
/ 13 февраля 2011

Я бы сделал вашу личность без ассоциации по умолчанию, затем определил бы дочернюю фабрику, которая добавляет ассоциацию, которая может быть немного нелогичной, но это правильный способ построения иерархии классов:

...