OK, got it now.
What is the method that takes a map called? build_from_map ?

I do this with a Builder class, which I typically call Factory at the boundray to user code, so I would write
<pre>
Factory.build(MyModule::MyClass, value)

# impl
def build(clazz, value)
  build_from(clazz.new, value)
end
</pre>

I then use polymorphic dispatcher so inside there is a Builder that looks something like this:
<pre>
class Builder 
  attr_accessor :model

  def build_from_Hash(aHash) { }
  def build_from_XXX (aXXX) { }
  # etc
}
</pre>
This is a very convenient way to handle building, and it is easily extended to specialized forms of building in an application.