Sha256: 429339d488d7a31d5d830e60cc3c88386f1badec6dc5dddc049fa5d0eedee38e

Contents?: true

Size: 908 Bytes

Versions: 1

Compression:

Stored size: 908 Bytes

Contents

# encoding: UTF-8
# frozen_string_literal: true

require 'active_support/concern'
require 'active_support/lazy_load_hooks'

module NullifyAttr
  module Extension
    extend ActiveSupport::Concern

    module ClassMethods
      def nullify(*attributes)
        before_validation attributes.extract_options! do
          attributes.each do |attribute|
            case attribute
              when Regexp
                self.class.column_names.each do |column_name|
                  if column_name.respond_to?(:match?) ? column_name.match?(attribute) : column_name =~ attribute
                    send("#{column_name}=", nil)
                  end
                end
              else
                send("#{attribute}=", nil)
            end
          end
          nil
        end
      end
    end
  end
end

ActiveSupport.on_load(:active_record) { ActiveRecord::Base.include NullifyAttr::Extension }

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nullify-attr-1.0.0 lib/nullify-attr.rb