Sha256: 40ce32ad7ccab33090109f850bfe24122b2b8c974744cc5d82cb4c55c4a228dd
Contents?: true
Size: 1.43 KB
Versions: 21
Compression:
Stored size: 1.43 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 or set 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) return unless attributes klass = self.class translations = klass.respond_to?(:translations) && klass.translations attributes.each_pair do |att, value| next unless klass.property?(att) || (translations && translations.include?(att)) self[att] = value end end def property_exists?(property) self.class.property?(property) end end end end
Version data entries
21 entries across 20 versions & 4 rubygems
Version | Path |
---|---|
hashie-3.4.4 | lib/hashie/extensions/ignore_undeclared.rb |