ruby-on-rails 如何使用FactoryBot覆盖模型的默认属性?

jxct1oxe  于 2023-06-25  发布在  Ruby
关注(0)|答案(1)|浏览(159)

我有一个Order模型,它的默认属性status_id的默认值是1。
我使用rspec来测试我的Rails应用程序。我在describe块中创建了一个对象,如下所示:

let!(:order) { create(:order, status_id: 3) }

当我执行测试时,我检查order对象的状态,发现order.status_id等于3,但是当我执行Order.last.status_id时,我得到的是1而不是3。如果我做Order.all.count,我得到1。当我检查orderOrder.last的对象id时,它们是相同的。但是,我注意到他们的记忆位置是不同的。
我想知道为什么我会看到这种行为,以及我如何修复它,使Order.last.status_id变成create语句中设置的3?

yvfmudvl

yvfmudvl1#

原因是由于Order模型中的before_save回调。我忘了检查那里,但现在看到,当回调被调用时,它根据另一个属性的值将status_id设置为默认值。

相关问题