我正在嘗試與工廠女孩創建has_many:has_many關係。FactoryGirl自引用關聯錯誤
這裏是我的模型:
class User < ActiveRecord::Base
has_many :user_roles
has_many :roles, through: :user_roles
end
class UserRole < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
class Role < ActiveRecord::Base
has_many :user_roles
has_many :users, through: :user_roles
end
這裏的工廠爲我的用戶:
FactoryGirl.define do
factory :user do
user_name { Faker::Name.user_name }
trait :admin do
association :user, factory: :admin, strategy: :create
end
end
end
這裏的工廠管理員角色:
FactoryGirl.define do
factory :admin, class: Role do
name 'admin'
end
end
這個問題的癥結是:
trait :admin do
association :user, factory: :admin, strategy: :create
end
我觸發這樣的:
FactoryGirl.create:用戶:管理員
但是,這給了我:
FactoryGirl::AssociationDefinitionError: Self-referencing association 'user' in 'admin'
這是爲什麼?而我應該如何讓這個用戶成爲管理員?我應該創建一個user_role
工廠並創建它嗎?