Sha256: f6c72b23c25798dc0b45040a6951059bee94ba4413734f6f798d4c5ba76f81b0

Contents?: true

Size: 631 Bytes

Versions: 7

Compression:

Stored size: 631 Bytes

Contents

require 'active_support/core_ext/object/blank'

module RailsStuff
  # Changes to `nil` assigned blank attributes.
  #
  #     class App
  #       nullify_blank_attrs :site_url
  #       # ...
  module NullifyBlankAttrs
    def nullify_blank_attrs(*attrs)
      nullify_blank_attrs_methods.class_eval do
        attrs.each do |attr|
          define_method("#{attr}=") { |val| super(val.presence) }
        end
      end
    end

    # Module to store generated methods, so they can be overriden in model.
    def nullify_blank_attrs_methods
      @nullify_blank_attrs_methods ||= Module.new.tap { |x| prepend x }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rails_stuff-0.6.0.rc1 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.5.1 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.5.0 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.4.0 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.3.0 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.2.0 lib/rails_stuff/nullify_blank_attrs.rb
rails_stuff-0.1.0 lib/rails_stuff/nullify_blank_attrs.rb