module Mongoid::Extensions::String
Attributes
@attribute [rw] unconvertable_to_bson
If the document is unconvertable.
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 19 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 31 def __mongoize_object_id__ convert_to_object_id unless blank? end
Mongoize the string for storage.
@note Returns a local time in the default time zone.
@example Mongoize the string.
"2012-01-01".__mongoize_time__ # => 2012-01-01 00:00:00 -0500
@return [ Time
| ActiveSupport::TimeWithZone ] Local time in the
configured default time zone corresponding to this string.
@since 3.0.0
# File lib/mongoid/extensions/string.rb, line 47 def __mongoize_time__ # This 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. parsed = ::Time.parse(self) if ::Time == ::Time.configured parsed else ::Time.configured.parse(self) end 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 143 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 68 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 80 def mongoid_id? self =~ /\A(|_)id\z/ 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 93 def numeric? !!Float(self) rescue ArgumentError (self =~ /\A(?:NaN|-?Infinity)\z/) == 0 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 107 def reader delete("=").sub(/\_before\_type\_cast\z/, '') 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 155 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 131 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 119 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 171 def convert_to_object_id BSON::ObjectId.legal?(self) ? BSON::ObjectId.from_string(self) : self end