0

我有一个类似这样的用户的 rails 结构:

User.create(
  email: 'asdf@test.com', 
  password: 'testtest', 
  password_confirmation: 'testtest'
).memberships.create(
  role_id: 1
)

在哪里,

Role.create(
  name: 'admin'
)

如何在 FactoryGirl 中创建此关联?

楷模:

用户.rb

has_many :memberships
has_many :roles, through: :memberships

会员资格.rb

belongs_to :user
belongs_to :role, dependent: :destroy

角色.rb

has_many :memberships, dependent: :destroy
has_many :users, through: :memberships
4

2 回答 2

0

这取决于您使用的关联。这是一个有很多关联的示例

factory :user do
  email                 "asdf@test.com"
  password              "testtest" 
  password_confirmation "testtest"
  role
end

创建用户并通过调用“角色”来设置关联

factory :role do 
  name "admin"
end

关于您的评论,试试这个:

factory :user do
  email                 "asdf@test.com"
  password              "testtest" 
  password_confirmation "testtest"
  role
end

factory :role do 
  name "admin"
end

factory :membership do
  user
  role
end
于 2013-08-10T16:44:30.300 回答
0

这就是您在维护管理工厂和非管理工厂的同时使用子工厂对其进行建模的方式

factory :user do
  sequence(:email) { |n| "user#{n}@rmail.com" }
  password "supersecret"
  password_confirmation { |u| u.password }
  factory :admin do
    admin_membership
  end
end
factory :membership do
  user
  role
  factory :admin_membership do
    admin_role
  end
end
factory :role do
  name "role"
  factory :admin_role do
    name "admin"
  end
end
于 2013-08-10T20:02:07.733 回答