lib/mongo_mapper/plugins/keys.rb in mongo_mapper-0.8.2 vs lib/mongo_mapper/plugins/keys.rb in mongo_mapper-0.8.3

- old
+ new

@@ -42,10 +42,15 @@ def object_id_key?(name) object_id_keys.include?(name.to_sym) end + # API Private + def can_default_id? + keys['_id'].can_default_id? + end + def to_mongo(instance) return nil if instance.nil? instance.to_mongo end @@ -266,12 +271,12 @@ end end 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') + id_provided = attrs.keys.map { |k| k.to_s }.detect { |k| k == 'id' || k == '_id' } + if !id_provided && self.class.can_default_id? write_key :_id, BSON::ObjectID.new end end end @@ -288,11 +293,9 @@ def read_key(key_name) if key = keys[key_name] value = key.get(instance_variable_get(:"@#{key_name}")) set_parent_document(key, value) instance_variable_set(:"@#{key_name}", value) - else - raise KeyNotFound, "Could not find key: #{key_name.inspect}" end end def read_key_before_typecast(name) instance_variable_get(:"@#{name}_before_typecast")