lib/mongo_mapper/plugins/keys.rb in mongo_mapper-0.7.1 vs lib/mongo_mapper/plugins/keys.rb in mongo_mapper-0.7.2

- old
+ new

@@ -144,42 +144,33 @@ end end module InstanceMethods def initialize(attrs={}, from_database=false) - unless attrs.nil? - provided_keys = attrs.keys.map { |k| k.to_s } - unless provided_keys.include?('_id') || provided_keys.include?('id') - write_key :_id, Mongo::ObjectID.new - end - end - - assign_type_if_present - + default_id_value(attrs) + assign_type + if from_database @new = false self.attributes = attrs else @new = true assign(attrs) end end - def new? - @new + def persisted? + !new? && !destroyed? end def attributes=(attrs) return if attrs.blank? attrs.each_pair do |name, value| writer_method = "#{name}=" if respond_to?(writer_method) - if writer_method == '_root_document=' - puts "_root_document= #{value.inspect}" - end self.send(writer_method, value) else self[name.to_s] = value end end @@ -236,31 +227,36 @@ def []=(name, value) ensure_key_exists(name) write_key(name, value) end - # @api public def keys self.class.keys end - # @api private? def key_names keys.keys end - # @api private? def non_embedded_keys keys.values.select { |key| !key.embeddable? } end - # @api private? def embedded_keys keys.values.select { |key| key.embeddable? } end private - def assign_type_if_present + def default_id_value(attrs) + unless attrs.nil? + provided_keys = attrs.keys.map { |k| k.to_s } + unless provided_keys.include?('_id') || provided_keys.include?('id') + write_key :_id, Mongo::ObjectID.new + end + end + end + + def assign_type self._type = self.class.name if respond_to?(:_type=) end def ensure_key_exists(name) self.class.key(name) unless respond_to?("#{name}=")