def collect_diff(memo)
      method_name = :"collect_#{self.type}_diff"

      if self.respond_to?(method_name)
        self.send(method_name, memo)
      else
        collect_default_diff(memo)
      end
    end
def collect_diff(memo)
      method_name = :"collect_#{self.type}_diff"

      if self.respond_to?(method_name)
        self.send(method_name, memo)
      else
        collect_default_diff(memo)
      end
    end
methods 
 Builds the mongodb updates based on
 the new state of the field.
 Call a different method if the field has a different behaviour.

 @param [ Hash ] memo Store the updates

 @return [ Hash ] The memo object upgraded