0

试图在保存时从对象中获取以前的值。想想这个场景:

@object = {:name => 'Dan', :occupation => '学生'}
@object[:occupation] = '全职员工'
@object.value_was[:occupation] # => '学生'

我希望没有方法是可以理解的value_was。此外,我想对模型对象做同样的事情:

@student = Student.find(1)
@student.occupation = '全职员工'
@student.save
@student.value_was(:occupation) # => '学生'

任何帮助将不胜感激。

那真的很有帮助

4

1 回答 1

5

ActiveModel 包括对“脏字段标记”的支持,它保留更改字段的前后状态。

您可以使用@student.occupation_was获取 的先前值occupation,并@student.occupation_changed?获取该值是否已更改。

这仅在保存之前有效,因为保存会重置值的更改状态。但是,如果您需要在保存记录后使用它,您可以在 before_save 回调中捕获此数据。#changed_attributes例如,您可以通过复制a来保留所有更改before_save,然后对其进行查询。

于 2012-11-30T00:23:12.113 回答