2016-10-10 5 views

답변

1

테스트에서 만들 모델의 공장 만 있으면됩니다. 예를 들어

당신이있는 경우 : 액티브가 필요할 때이 모델을 결합 생성으로

class User 
    has_many :user_projects 
    has_many :projects, through: :user_projects 
end 

class UserProject 
    belongs_to :user 
    belongs_to :project 
end 

class Project 
    has_many :user_projects 
    has_many :users, through: :user_projects 
end 

당신은 정말 UserProject의 공장이 필요하지 않습니다.

Fabricator(:user) do 
    projects(count: 3) 
end 

Fabricator(:project) do 
    user 
end 

그러나 "피벗"모델은 단순한 테이블을 조인 이상입니다 자체의 특성은 해당 개체에 대한 공장이 종종 유용 경우 : 정말 최고의

class User 
    has_many :lists 
    has_many :tasks, through: :lists 
end 

class List 
    belongs_to :user 
    has_many :tasks 
end 

class Task 
    belongs_to :list 
    has_one :user, through: :list 
end 

Fabricator(:list) do 
    name { 'Shopping List' } 
    user 
    tasks(count: 3) 
end 
+0

되지 않음을 세상의 모든 예 - 커피가 모두 ... – max

+0

그것은 많은 감사의 마음을 선사합니다 @max. 그러나, "필요할 때 ActiveRecord가 조인 모델을 생성 할 때 UserProject에 대한 팩토리가 정말로 필요하지 않습니다."라고 말하면,'''has_many : through''' 연관성의 경우입니까? –

+1

예, 첫 번째 예제에서'user.projects.create' 또는'project.users.create'를 실행하면'user_projects'에 레코드가 삽입됩니다. – max