Ruby on rails 如何在保存时获取更改的值

Ruby on rails 如何在保存时获取更改的值,ruby-on-rails,ruby,ruby-on-rails-3,oop,Ruby On Rails,Ruby,Ruby On Rails 3,Oop,尝试在保存时从对象获取以前的值。想想这个场景: @object = {:name => 'Dan', :occupation => 'student'} @object[:occupation] = 'Full time employee' @object.value_was[:occupation] # => 'student' 任何帮助都将不胜感激 这将非常有用ActiveModel包括对“”的支持,它为更改的字段保留前后状态 您可以使用@student.occulation\u was获取

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

@object = {:name => 'Dan', :occupation => 'student'} @object[:occupation] = 'Full time employee' @object.value_was[:occupation] # => 'student' 任何帮助都将不胜感激


这将非常有用

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

您可以使用
@student.occulation\u was
获取
occulation
的上一个值,并使用
@student.occulation\u changed?
获取该值是否已更改


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

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

您可以使用
@student.occulation\u was
获取
occulation
的上一个值,并使用
@student.occulation\u changed?
获取该值是否已更改


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

回答得很好!你也知道如何改变对象,那太棒了!例如,新对象:
@student#=>{:name=>'Dan',:occulation=>'Full-time employee'
,通过调用在标记get-
@student.was的脏字段中找不到的方法{:name=>'Dan',:occulation=>'student'}
您将需要
@student.previous_changes
,它将返回一个保存所更改内容的列表。返回一个空哈希值{}很好的答案!您还知道如何获得更改对象,那将是非常棒的!例如,新对象:
@student#=>{:name=>'Dan',:occulation=>'Full-time employee'
并通过调用在标记get-
@student.was的脏字段中找不到的方法{:name=>'Dan',:occulation=>'student'}
您将需要
@student.previous_changes
,它将返回save所更改内容的列表。返回空哈希值{} @student = Student.find(1) @student.occupation = 'Full time employee' @student.save @student.value_was(:occupation) # => 'student'