Hope this should be simple: I have a User model and a Role model.
Factories
for each.
When I create a User using FG, I want to assign a specific role. Cant
seem
to figure out how to do this, getting errors like: uninitialized
constant
SysadminRole for doing things this way:
Factory.define :user do |u|
u.practice_id { |a| a.association(:practice).id }
u.password ‘password1’
u.password_confirmation ‘password1’
u.role { |a| a.association(:sysadmin_role) }
end
Factory.define :sysadmin_role do |f|
f.name ‘sysadmin’
end
u.password_confirmation ‘password1’
u.role { |a| a.association(:sysadmin_role) }
end
Factory.define :sysadmin_role do |f|
f.name ‘sysadmin’
end
Since your model is called role and not sysadmin_role, you need to let
FactoryGirl know. Otherwise it will use its convention of
constantizing the symbol after “define” to determine the model to call.
Factory.define :sysadmin_role, :class => “Role” do |f|
Also good to know is that if you want to use factories for roles that
have some fields in common and others that are specific, that you can
use this:
Factory.define :role do |f|
f.common_field “foobar”
f.name “guest”
end
Factory.define :sysadmin_role, :parent => :role do |f|
f.name “sysadmin”
end
Factory.define :moderator_role, :parent => :role do |f|
f.name “moderator”
end