Contagem de teste de associação, não classe

Ao testar, você pode fazer algo como:

expect { @user.make_widget }.to change { Widget.count }.by(1)

Não. Pode haver algum motivo para que o user_id do novo widget não seja definido. Em vez disso, teste:

expect { @user.make_widget }.to change { @user.widgets.count }.by(1)

Dessa forma, você está apenas olhando para os widgets que realmente pertencem ao usuário.