Ao testar, você pode fazer algo como:
@user.make_widget
expect(Widget.last.color).to eql Widget.DEFAULT_COLOR
Não. Pode haver algum motivo pelo qual o novo widget não é o “último”, como se a ordem de classificação padrão dos Widgets não fosse cronológica e houvesse outros Widgets existentes. (Sim, um teste deve começar com um banco de dados limpo, mas em um projeto recente eu tive que executar testes que foram limpos por transação e testes que foram limpos por truncamento no mesmo banco de dados. O último teste truncado deixaria seu lixo o banco de dados.) Em vez disso, teste:
@user.make_widget
expect(@user.widgets.last.color).to eql Widget.DEFAULT_COLOR
Dessa forma, widgets preexistentes não devem interferir, se você se esqueceu de começar com um banco de dados limpo.