I came across an issue in my code and after a hard debug session I found something that smells. First the context of my issue. I have a AR object that has a polymorphic belongs_to currently tied to nothing, I want to dump it to YAML. record.to_yaml This raises the following exception: TypeError: wrong argument type nil (expected Data) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/ lib/ruby/1.8/yaml.rb:391:in `emit'' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/ lib/ruby/1.8/yaml.rb:391:in `quick_emit'' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/ lib/ruby/1.8/yaml/rubytypes.rb:15:in `to_yaml'' Now to the point: tracing the code path lead me to AssociationProxy#method_missing which for 2.3.x or 3.0.x is very similar: def method_missing(method, *args) if load_target unless @target.respond_to?(method) message = "undefined method `#{method.to_s}'' for \"#{@target}\":#{@target.class.to_s}" raise NoMethodError, message end if block_given? @target.send(method, *args) { |*block_args| yield(*block_args) } else @target.send(method, *args) end end end The smell: load_target may return nil, when it does, the return value of method_missing is nil. BUT the caller may have wanted to call a method on nil. Like #to_yaml ! The caller (in this case something in YAML) expects some data back from nil.to_yaml (a string) but it receives nil which later raises the exception. What about that? Regards, Pascal -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-core+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.