Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何获取特定属性在rails中首次更改的日期_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 如何获取特定属性在rails中首次更改的日期

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

我有一个布尔属性,其默认值为false。如何获取属性更改为true的日期? “is_changed”将显示值是否已更改。我想要属性第一次更改的日期。
如何在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
    。每当第一次更改
    字段时更新它。
    
    • 如果您的要求如此简单,我建议您这样做。不要使用较重的宝石
  • 像或一样使用库
    • 这些有助于跟踪记录中的每个活动
    • 您可以跟踪每一次更改,更改内容以及更改时间
    • 您还可以将记录还原到更改的任何时间点

我认为有两种类似上述答案的方法,建议创建一个单独的字段,并在字段第一次或第二次更改时在其中添加日期

您可以使用它来记录所有带有参数的模型活动。 它基于此表创建一个“活动”表。您可以获取字段首次更改时的日期,但这是一个漫长的过程

使用