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}=")