我正在尝试与工厂女孩创建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
工厂并创建它吗?