Sha256: f49acf546054a1b791a2b05cc6d6dab1e270e204832c794be2dd7d9e4783c94b

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

module Hashie
  module Extensions
    # IgnoreUndeclared is a simple mixin that silently ignores
    # undeclared properties on initialization instead of
    # raising an error. This is useful when using a Trash to
    # capture a subset of a larger hash.
    #
    # Note that attempting to retrieve an undeclared property
    # will still raise a NoMethodError, even if a value for
    # that property was provided at initialization.
    #
    # @example
    #   class Person < Trash
    #     include Hashie::Extensions::IgnoreUndeclared
    #
    #     property :first_name
    #     property :last_name
    #   end
    #
    #   user_data = {
    #      :first_name => 'Freddy',
    #      :last_name => 'Nostrils',
    #      :email => 'freddy@example.com'
    #   }
    #
    #   p = Person.new(user_data) # 'email' is silently ignored
    #
    #   p.first_name # => 'Freddy'
    #   p.last_name  # => 'Nostrils'
    #   p.email      # => NoMethodError
    module IgnoreUndeclared
      def initialize_attributes(attributes)
        attributes.each_pair do |att, value|
          if self.class.property?(att) || (self.class.respond_to?(:translations) && self.class.translations.include?(att.to_sym))
            self[att] = value
          end
        end if attributes
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hashie-2.1.2 lib/hashie/extensions/ignore_undeclared.rb
hashie-2.1.1 lib/hashie/extensions/ignore_undeclared.rb
hashie-2.1.0 lib/hashie/extensions/ignore_undeclared.rb