我有一个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。当我检查order
和Order.last
的对象id时,它们是相同的。但是,我注意到他们的记忆位置是不同的。
我想知道为什么我会看到这种行为,以及我如何修复它,使Order.last.status_id
变成create
语句中设置的3?
1条答案
按热度按时间yvfmudvl1#
原因是由于
Order
模型中的before_save
回调。我忘了检查那里,但现在看到,当回调被调用时,它根据另一个属性的值将status_id
设置为默认值。