module Mongoid::Extensions::String
Attributes
@attribute [rw] #unconvertable_to_bson If the document is unconvetable.
Public Instance Methods
Evolve the string into an object id if possible.
@example Evolve the string.
"test".__evolve_object_id__
@return [ String, BSON::ObjectId ] The evolved string.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 16 def __evolve_object_id__ convert_to_object_id end
Mongoize the string into an object id if possible.
@example Evolve the string.
"test".__mongoize_object_id__
@return [ String, BSON::ObjectId, nil ] The mongoized string.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 28 def __mongoize_object_id__ convert_to_object_id unless blank? end
Mongoize the string for storage.
@example Mongoize the string.
"2012-01-01".__mongoize_time__
@note The extra parse from Time is because ActiveSupport::TimeZone
either returns nil or Time.now if the string is empty or invalid, which is a regression from pre-3.0 and also does not agree with the core Time API.
@return [ Time ] The time.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 45 def __mongoize_time__ ::Time.parse(self) ::Time.configured.parse(self) end
Does the string end with _before_type_cast?
@example Is the string a setter method?
"price_before_type_cast".before_type_cast?
@return [ true, false ] If the string ends with “_before_type_cast”
@since 3.1.0
# File lib/mongoid/extensions/string.rb, line 131 def before_type_cast? ends_with?("_before_type_cast") end
Convert the string to a collection friendly name.
@example Collectionize the string.
"namespace/model".collectionize
@return [ String ] The string in collection friendly form.
@since 1.0.0
# File lib/mongoid/extensions/string.rb, line 58 def collectionize tableize.gsub("/", "_") end
Is the string a valid value for a Mongoid id?
@example Is the string an id value?
"_id".mongoid_id?
@return [ true, false ] If the string is id or _id.
@since 2.3.1
# File lib/mongoid/extensions/string.rb, line 70 def mongoid_id? self =~ /\A(|_)id$/ end
Is the string a number? The literals “NaN”, “Infinity”, and “-Infinity” are counted as numbers.
@example Is the string a number.
"1234.23".numeric?
@return [ true, false ] If the string is a number.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 83 def numeric? true if Float(self) rescue (self =~ /^NaN|\-?Infinity$/) end
Get the string as a getter string.
@example Get the reader/getter
"model=".reader
@return [ String ] The string stripped of “=”.
@since 1.0.0
# File lib/mongoid/extensions/string.rb, line 95 def reader delete("=").sub(/\_before\_type\_cast$/, '') end
Is the object not to be converted to bson on criteria creation?
@example Is the object unconvertable?
object.unconvertable_to_bson?
@return [ true, false ] If the object is unconvertable.
@since 2.2.1
# File lib/mongoid/extensions/string.rb, line 143 def unconvertable_to_bson? @unconvertable_to_bson ||= false end
Is this string a valid_method_name?
@example Is the string a valid Ruby idenfier for use as a method name
"model=".valid_method_name?
@return [ true, false ] If the string contains a valid Ruby identifier.
@since 3.0.15
# File lib/mongoid/extensions/string.rb, line 119 def valid_method_name? /[@$"-]/ !~ self end
Is this string a writer?
@example Is the string a setter method?
"model=".writer?
@return [ true, false ] If the string contains “=”.
@since 1.0.0
# File lib/mongoid/extensions/string.rb, line 107 def writer? include?("=") end
Private Instance Methods
If the string is a legal object id, convert it.
@api private
@example Convert to the object id.
string.convert_to_object_id
@return [ String, BSON::ObjectId ] The string or the id.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 159 def convert_to_object_id BSON::ObjectId.legal?(self) ? BSON::ObjectId.from_string(self) : self end