Sha256: 7409835a04e7d19e12804e44f568f52417584413c11ab8ec1c5f46cc49a71405

Contents?: true

Size: 783 Bytes

Versions: 1

Compression:

Stored size: 783 Bytes

Contents

module ActiverecordTouchy
  module Associations
    def self.included(base)
      class << base
        prepend(ClassMethods)
      end
    end

    module ClassMethods
      def has_many(name, scope = nil, options = {}, &extension)
        touch = (scope.is_a?(Hash) ? scope : options).delete(:touch)
        result = super

        if touch
          after_commit do
            public_send(name).update_all(updated_at: Time.now.utc)
          end
        end

        result
      end

      def has_one(name, scope = nil, options = {})
        touch = (scope.is_a?(Hash) ? scope : options).delete(:touch)
        result = super

        if touch
          after_commit do
            public_send(name)&.touch
          end
        end

        result
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord_touchy-0.1.0 lib/activerecord_touchy/associations.rb