Ruby on rails 4 如何获取特定属性在rails中首次更改的日期
我有一个布尔属性,其默认值为false。如何获取属性更改为true的日期? “is_changed”将显示值是否已更改。我想要属性第一次更改的日期。Ruby on rails 4 如何获取特定属性在rails中首次更改的日期,ruby-on-rails-4,Ruby On Rails 4,我有一个布尔属性,其默认值为false。如何获取属性更改为true的日期? “is_changed”将显示值是否已更改。我想要属性第一次更改的日期。 如何在rails中获得它?您可以将布尔属性包装在不同的模型中,从中可以轻松跟踪特定字段最初设置或更新的时间。在当前模型中,您无法跟踪特定属性的变化状态,只能跟踪整个对象,但我猜这不是您所需要的。在该表中添加属性“first\u change”,它将保存布尔属性每一次更改的时间戳,更改为true或false,然后在模型中编写如下回调 before_u
如何在rails中获得它?您可以将布尔属性包装在不同的模型中,从中可以轻松跟踪特定字段最初设置或更新的时间。在当前模型中,您无法跟踪特定属性的变化状态,只能跟踪整个对象,但我猜这不是您所需要的。在该表中添加属性“first\u change”,它将保存布尔属性每一次更改的时间戳,更改为true或false,然后在模型中编写如下回调
before_update :check_changes
def check_changes
if self.<boolean_attribute>.is_changed? and first_change.nil?
self.update(first_change: Time.now)
end
end
更新前:检查更改
def检查更改
如果你改变了自己?第一个零钱是零?
自我更新(第一次更改:Time.now)
结束
结束
在此之后,您可以检查布尔属性何时更改。看来您基本上想要
ActiveRecord
记录中的git
功能
有两种方法
- 使用单独的列,如
。每当第一次更改changed\u date
字段时更新它。
- 如果您的要求如此简单,我建议您这样做。不要使用较重的宝石
- 像或一样使用库
- 这些有助于跟踪记录中的每个活动
- 您可以跟踪每一次更改,更改内容以及更改时间
- 您还可以将记录还原到更改的任何时间点