【发布时间】:2013-11-02 12:00:39
【问题描述】:
我有一个关于 Rails 4 的问题。
在我的 factories.rb 我有类似的东西:
factory :user do
sequence(:name) { |n| "User #{n}" }
sequence(:email) { |n| "user_#{n}@example.org" }
password 'foobar'
password_confirmation 'foobar'
end
问题,我不知道在创建用户后添加关系。
当我创建一个用户时,他是一个版主,我为用户分配这样的角色:
u.add_role_id!(11)
我有不同的关系表,有 user_id 和 role_id 并且在用户模型上我有方法。
def add_role_id!(role)
role_user_relationship.create!(role_id: Role.find(role).id)
end
我如何在 factories.rb 上做到这一点?
现在我要做什么:
u = FactoryGirl.create(:moderator)
u.add_role_id!(11)
我想在 factories.rb
上默认分配我是怎么做到的?!
谢谢大家!
手动
解决办法:
我必须添加这些行:
after(:create) do |u|
u.add_roles_ids!([10,20,30])
end
完整的代码:
factory :user do
sequence(:name) { |n| "User #{n}" }
sequence(:email) { |n| "user_#{n}@mudev.org" }
password 'foobar'
password_confirmation 'foobar'
after(:create) do |u|
u.add_roles_ids!([10,20,30])
end
end
感谢彼得·阿尔文
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 factory-bot rspec-rails