我有一个布尔属性,其默认值为false。如何在属性更改为true时获取日期? 如果值已更改,则is_changed将为您提供。我想要首次更改属性的日期。 我如何在轨道上获得它?
答案 0 :(得分:1)
在该表中添加属性'first_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
在此之后,您可以检查布尔属性何时更改。
答案 1 :(得分:0)
You can wrap your boolean attribute in distinct model and from there you can easily trace when specific field was initially setted up or updated. In your current model you can't trace changing state of specific attributes, only the whole object, but it's not what you need I guess.
答案 2 :(得分:0)
好吧,看起来你基本上想要JTable
记录中git
的功能。
有两种方式
ActiveRecord
。第一次更改changed_date
时更新它。
答案 3 :(得分:0)
我认为有两种方式,如上面的答案建议制作一个单独的字段,并在第一次更改字段时添加日期或
您可以使用Public Activity gem来记录所有带有参数的模型活动。 它根据此表创建一个活动表,您可以在第一次更改时获取字段的日期,但这是一个漫长的过程