lib/mongo_mapper/plugins/keys/key.rb in mongo_mapper-0.13.1 vs lib/mongo_mapper/plugins/keys/key.rb in mongo_mapper-0.14.0.rc1
- old
+ new
@@ -91,10 +91,15 @@
def valid_ruby_name?
!!@name.match(/\A[a-z_][a-z0-9_]*\z/i)
end
+ RESERVED_KEYS = %w( id class object_id )
+ def reserved_name?
+ RESERVED_KEYS.include?(@name)
+ end
+
def read_accessor?
any_accessor? ["read"]
end
def write_accessor?
@@ -109,21 +114,22 @@
return true if @accessors.empty?
return false unless (@accessors & ["skip", "none"]).empty?
return !(@accessors & arr_opt).empty?
end
- private
- def typecast_class
- @typecast_class ||= options[:typecast].constantize
- end
+ private
- def validate_key_name!
- if %w( id ).include? @name
- raise MongoMapper::InvalidKey.new("`#{@name}` is a reserved key name (did you mean to use _id?)")
- elsif !valid_ruby_name?
- raise MongoMapper::InvalidKey.new("`#{@name}` is not a valid key name. Keys must match [a-z][a-z0-9_]*")
- end
+ def typecast_class
+ @typecast_class ||= options[:typecast].constantize
+ end
+
+ def validate_key_name!
+ if reserved_name?
+ raise MongoMapper::InvalidKey.new("`#{@name}` is a reserved key name (did you mean to use _id?)")
+ elsif !valid_ruby_name?
+ raise MongoMapper::InvalidKey.new("`#{@name}` is not a valid key name. Keys must match [a-z][a-z0-9_]*")
end
+ end
end
end
end
end