Sha256: b8680bec3685d3153c388868b664ab1da75da2f046ca09d57360d993f297bc7f
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
module MongoDoc module Document class ParentProxy attr_reader :assoc_name, :_parent def initialize(parent, assoc_name) raise ArgumentError.new('ParentProxy requires a parent') if parent.nil? raise ArgumentError.new('ParentProxy require an association name') if assoc_name.blank? @_parent = parent @assoc_name = assoc_name end def path_to_root(attrs) assoc_attrs = attrs.inject({}) do |assoc_attrs, (key, value)| assoc_attrs["#{assoc_name}.#{key}"] = value assoc_attrs end _parent.path_to_root(assoc_attrs) end private def method_missing(method, *args) unless @_parent.respond_to?(method) message = "undefined method `#{method.to_s}' for proxied \"#{@_parent}\":#{@_parent.class.to_s}" raise NoMethodError, message end if block_given? @_parent.send(method, *args) { |*block_args| yield(*block_args) } else @_parent.send(method, *args) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mongodoc-0.0.0 | lib/mongodoc/parent_proxy.rb |