我正在寻找为记录中的多个列添加*_updated_at
列的方法。
它的工作方式与普通的Rails时间戳类似,即基于约定。如果有一个名为author_updated_at
的数据库列,则只要author
属性发生更改,该类就会自动更新它。
写起来并不难,但我想在这里问一下,如果有人之前已经做过,或者那里有一块宝石。我也有兴趣知道这种方法是否存在性能问题,但我认为如果使用before_save
则应该可以忽略不计。没有额外的读取或写入。
答案 0 :(得分:1)
我用不同版本的@max解决方案解决了。
previous_changes
没有为我工作。我使用的是Rails 4.2。
module AttributeTimestampable
extend ActiveSupport::Concern
included do
after_save do
self.changed.each do |attr|
timestamp = "#{attr}_updated_at"
update_column(timestamp, updated_at) if self.respond_to? timestamp
end
end
end
end