У меня есть эти 5 моделей: Guardian, Student, Relationship, RelationshipType и School. Между ними у меня есть эти ассоциации
class Guardian < ActiveRecord::Base
belongs_to :school
has_many :relationships, :dependent => :destroy
has_many :students, :through => :relationships
end
class Student < ActiveRecord::Base
belongs_to :school
has_many :relationships, :dependent => :destroy
has_many :guardians, :through => :relationships
end
class Relationship < ActiveRecord::Base
belongs_to :student
belongs_to :guardian
belongs_to :relationship_type
end
class School < ActiveRecord::Base
has_many :guardians, :dependent => :destroy
has_many :students, :dependent => :destroy
end
class RelationshipType < ActiveRecord::Base
has_many :relationships
end
Я хочу написать FactoryGirl, который определяет отношения. У каждого отношения должен быть опекун и студент. Эти двое должны принадлежать одной школе. У опекуна factory есть связь со школой, и ученик factory. Я не смог заставить их быть построенными в одной школе. У меня есть следующий код:
FactoryGirl.define do
factory :relationship do
association :guardian
association :student, :school => self.guardian.school
relationship_type RelationshipType.first
end
end
Это приводит к следующей ошибке, когда я пытаюсь построить отношения, используя этот factory:
undefined method `school' for #<FactoryGirl::Declaration::Implicit:0x0000010098af98> (NoMethodError)
Есть ли способ сделать то, что я хочу, чтобы страж и ученик принадлежали к одной и той же школе, не прибегая к передаче уже созданных опекунов и учеников к factory (что не является его целью)?