module SelfUpdatedAt::ClassMethods
Public Instance Methods
self_updated_at(update_column_name, columns: [], methods: [])
click to toggle source
# File lib/self_updated_at.rb, line 30 def self_updated_at(update_column_name, columns: [], methods: []) before_create do current_time = self.class.default_timezone == :utc ? Time.now.utc : Time.now write_attribute(update_column_name, current_time) if eval("#{update_column_name}.nil?") self end before_update do current_time = self.class.default_timezone == :utc ? Time.now.utc : Time.now # for ActiveRecord ~> 5.1 if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new('5.1') columns_changed = columns.any? { |c| will_save_change_to_attribute?(c) } else columns_changed = columns.any? { |c| attribute_changed?(c) } end if (columns_changed || methods.any? { |m| send(m) }) write_attribute(update_column_name, current_time) end self end end