Tôi có 5 mô hình sau: Guardian, Student, Relationship, RelationshipType và School. Giữa chúng, tôi có các liên kết nàyNhận hai liên kết trong một Nhà máy để chia sẻ một liên kết khác
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
Tôi muốn viết FactoryGirl xác định mối quan hệ. Mọi mối quan hệ phải có người giám hộ và học sinh. Hai người này phải thuộc về cùng một trường. Nhà máy giám hộ có liên kết với trường học, và nhà máy sinh viên cũng vậy. Tôi đã không thể làm cho chúng được xây dựng trong cùng một trường học. Tôi đã có đoạn mã sau:
FactoryGirl.define do
factory :relationship do
association :guardian
association :student, :school => self.guardian.school
relationship_type RelationshipType.first
end
end
Điều này dẫn đến các lỗi sau khi tôi cố gắng xây dựng một mối quan hệ sử dụng nhà máy này:
undefined method `school' for #<FactoryGirl::Declaration::Implicit:0x0000010098af98> (NoMethodError)
Có cách nào để làm những gì tôi muốn, để làm cho người giám hộ và học sinh thuộc cùng một trường mà không cần phải nghỉ mát để vượt qua những người bảo vệ và sinh viên đã tạo ra cho nhà máy (không phải mục đích của nó)?
Tôi không chắc liệu điều này có liên quan đến lỗi hay không, nhưng lớp học được viết dưới dạng khai báo lớp quan hệ thứ hai (trước khi tôi chỉnh sửa). – PinnyM