User モデルと Task モデル (Rails 4) で rolify を使用しています。ユーザーが持つことができる役割の 1 つに「所有者」があります。Factory Girl を使用してユーザー オブジェクトを作成し、ロールを割り当てたいと考えています。ここに私の工場があります:
FactoryGirl.define do
factory :task do
owner "Steve"
agency "an agency"
facility "a facility"
description "This task must absolutely be done"
due_date "2013-12-22 03:57:37"
completed_date "2013-12-22 03:57:37"
factory :task_with_owner do
ignore do
user_id nil
end
after(:create) do |task, user_id|
User.find(user_id).add_role :owner, task
end
end
end
end
この仕様は合格します:
it 'is capable of creating a valid object with owner' do
@user = create(:user)
task = create(:task_with_owner, user_id: @user.id)
expect(@user.has_role? :owner, task).to be_true
end
この仕様は失敗します:
it 'is capable of creating two valid objects with an owner' do
@user = create(:user, username: 'janeblow')
task = create(:task_with_owner, user_id: @user.id)
expect(@user.has_role? :owner, task).to be_true
task = create(:task_with_owner, user_id: @user.id)
expect(@user.has_role? :owner, task).to be_true
end
エラーは次のとおりです。
Failure/Error: task = create(:task_with_owner, user_id: @user.id)
ActiveRecord::RecordNotFound:
Couldn't find User with id=#<#<Class:0x000000050f5e10>:0x00000004c9ed08>
# ./spec/factories/tasks.rb:19:in `block (4 levels) in <top (required)>'
# ./spec/models/role_spec.rb:15:in `block (2 levels) in <top (required)>'
なんで?