gpt4 book ai didi

ruby-on-rails - 如何创建与 has_many :through relationship in Factory Girl? 的关联

转载 作者:行者123 更新时间:2023-12-04 00:06:34 25 4
gpt4 key购买 nike

在我的模型中,我有以下设置:

class User < ActiveRecord::Base
has_many :assignments
has_many :roles, :through => :assignments
end


class Role < ActiveRecord::Base
has_many :assignments
has_many :users, :through => :assignments
end

class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :role

attr_accessible :role_id, :user_id
end

在我的 factory.rb 文件中我有:

FactoryGirl.define do
factory :user do
sequence(:username) { |n| "user#{n}" }
email { "#{username}@example.com" }
password 'secret'
password_confirmation 'secret'

factory :admin do
...
end
end

factory :role do
name 'Normal'
value 'normal'
end

factory :assignment do
...
end
end

我正在努力弄清楚如何向“用户” block 内的“管理员”工厂添加一个角色:名称=>“管理员”,:值=>“管理员”,以便我可以调用

create(:admin)

在我的测试中,有一个具有管理员角色的用户。

感谢您的关注。

最佳答案

对于这样的工厂,您需要使用 factory girl 的回调。试试这个:

FactoryGirl.define do
factory :user do
...
end

factory :admin, :parent => :user do
after_create {|u| Factory(:assignment, :role => Factory(:role, :name => 'admin', :value => 'admin'), :user => u)}
end

factory :role do
...
end

factory :assignment do
user {|a| a.association(:user)}
role {|a| a.association(:role)}
end
end

关于ruby-on-rails - 如何创建与 has_many :through relationship in Factory Girl? 的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com