@@ -600,3 +600,26 @@ returns ``true``:
600600    b.name == "Depeche Mode"
601601  end
602602  # => #<Band _id: 62c58e383282a4cbe82bd74b, name: "Depeche Mode">
603+ 
604+ 
605+ Changes to the ``attributes_before_type_cast`` Hash
606+ ---------------------------------------------------
607+ 
608+ The ``attributes_before_type_cast`` hash has been changed to function more like
609+ ActiveRecord:
610+ 
611+   - On instantiation of a new model (without parameters), the
612+     ``attributes_before_type_cast`` hash has the same contents as the
613+     ``attributes`` hash. If parameters are passed to the initializer, those
614+     values will be stored in the ``attributes_before_type_cast`` hash before
615+     they are ``mongoized``.
616+   - When assigning a value to the model, the ``mongoized`` value (i.e. when
617+     assiging '1' to an Integer field, it is ``mongoized`` to 1) is stored in
618+     the ``attributes`` hash, whereas the raw value (i.e. '1') is stored in the
619+     ``attributes_before_type_cast`` hash.
620+   - When saving, creating (i.e. using the ``create!`` method), or reloading the
621+     model, the ``attributes_before_type_cast`` hash is reset to have the same
622+     contents as the ``attributes`` hash.
623+   - When reading a document from the database, the ``attributes_before_type_cast``
624+     hash contains the attributes as they appear in the database, as opposed to
625+     their ``demongoized`` form.
0 commit comments