简体   繁体   中英

factory_girl: has many through association

I have rich many to many relationship between projects and users. My project model has:

  has_many :project_members, dependent: :destroy, foreign_key: 'gallery_id'
  has_many :members, through: :project_members,
                     class_name: 'User',
                     foreign_key: 'member_id' 

user model:

  has_many :project_members, dependent: :destroy, foreign_key: 'member_id'
  has_many :member_projects, through: :project_members,
                             source: :member_project

and project_member model:

  belongs_to :member_project, foreign_key: 'gallery_id', class_name: 'Project'
  belongs_to :member, foreign_key: 'member_id', class_name: 'User'

I wrote project factory as:

FactoryGirl.define do
  factory :project_member do
    association :project
    association :user
    role 'owner'
  end
end

However it gives me:

>  undefined method `project=' for #<ProjectMember:0x00000006f66048>

if I write following:

FactoryGirl.define do
  factory :project_member do
    association :member_project, foreign_key: 'gallery_id', class_name: 'Project'
    association :member, foreign_key: 'member_id', class_name: 'User'
    role 'owner'
  end
end

it says:

Factory not registered: member_project

I am not sure how do I define many to many through factory object.

Assuming you have factories for Project and User

factory :project_member do
    member_project FactoryGirl.build(:project)
    member FactoryGirl.build(:user)
    role 'owner'
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM