Module: TrackingColumn::ClassMethods

Defined in:
lib/tracking_column.rb

Instance Method Summary collapse

Instance Method Details

#tracking_column(target, r_column = nil, allow_nil: false) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/tracking_column.rb', line 8

def tracking_column(target, r_column = nil, allow_nil: false)
  define_method :"set_#{target}_updated_at" do
    recorder = r_column || :"#{target}_updated_at"

    new_record = send(:"new_record?")

    return if new_record && allow_nil
    return if !new_record && !send(:"#{target}_changed?")

    send(:"#{recorder}=", Time.current)
  end

  private :"set_#{target}_updated_at"

  before_save :"set_#{target}_updated_at"
end