0
두 모델 간의 조인 테이블을 작성하여 두 모델 간의 '다 대다'관계를 표현했습니다 (has_many: through
연관).조인 테이블 모델에 대한 fabricator를 생성해야합니까?
이제 테스트를 작성하고 조인 테이블 모델에 대한 Fabricator를 만들어야하는지 궁금합니다. 내 조인 테이블에는 2 개의 관련 모델의 외래 키만 있습니다.
두 모델 간의 조인 테이블을 작성하여 두 모델 간의 '다 대다'관계를 표현했습니다 (has_many: through
연관).조인 테이블 모델에 대한 fabricator를 생성해야합니까?
이제 테스트를 작성하고 조인 테이블 모델에 대한 Fabricator를 만들어야하는지 궁금합니다. 내 조인 테이블에는 2 개의 관련 모델의 외래 키만 있습니다.
테스트에서 만들 모델의 공장 만 있으면됩니다. 예를 들어
당신이있는 경우 : 액티브가 필요할 때이 모델을 결합 생성으로
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
되지 않음을 세상의 모든 예 - 커피가 모두 ... – max
그것은 많은 감사의 마음을 선사합니다 @max. 그러나, "필요할 때 ActiveRecord가 조인 모델을 생성 할 때 UserProject에 대한 팩토리가 정말로 필요하지 않습니다."라고 말하면,'''has_many : through''' 연관성의 경우입니까? –
예, 첫 번째 예제에서'user.projects.create' 또는'project.users.create'를 실행하면'user_projects'에 레코드가 삽입됩니다. – max