String inflections define new methods on the String class to transform names for different purposes. For instance, you can figure out the name of a database from the name of a class.
"ScaleScore".tableize # => "scale_scores"
- camelcase
- camelize
- classify
- constantize
- dasherize
- demodulize
- foreign_key
- humanize
- parameterize
- pluralize
- singularize
- tableize
- titlecase
- titleize
- underscore
Alias for camelize
By default, camelize converts strings to UpperCamelCase. If the argument to camelize is set to :lower then camelize produces lowerCamelCase.
camelize will also convert ’/’ to ’::’ which is useful for converting paths to namespaces.
"active_record".camelize # => "ActiveRecord" "active_record".camelize(:lower) # => "activeRecord" "active_record/errors".camelize # => "ActiveRecord::Errors" "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 44 44: def camelize(first_letter = :upper) 45: case first_letter 46: when :upper then Inflector.camelize(self, true) 47: when :lower then Inflector.camelize(self, false) 48: end 49: end
Create a class name from a plural table name like Rails does for table names to models. Note that this returns a string and not a class. (To convert to an actual class follow classify with constantize.)
"egg_and_hams".classify # => "EggAndHam" "posts".classify # => "Post"
Singular names are not handled correctly.
"business".classify # => "Busines"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 129 129: def classify 130: Inflector.classify(self) 131: end
constantize tries to find a declared constant with the name specified in the string. It raises a NameError when the name is not in CamelCase or is not initialized.
Examples
"Module".constantize # => Module "Class".constantize # => Class
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 161 161: def constantize 162: Inflector.constantize(self) 163: end
Replaces underscores with dashes in the string.
"puni_puni" # => "puni-puni"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 78 78: def dasherize 79: Inflector.dasherize(self) 80: end
Removes the module part from the constant expression in the string.
"ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections" "Inflections".demodulize # => "Inflections"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 86 86: def demodulize 87: Inflector.demodulize(self) 88: end
Creates a foreign key name from a class name. separate_class_name_and_id_with_underscore sets whether the method should put ‘_’ between the name and ‘id’.
Examples
"Message".foreign_key # => "message_id" "Message".foreign_key(false) # => "messageid" "Admin::Post".foreign_key # => "post_id"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 150 150: def foreign_key(separate_class_name_and_id_with_underscore = true) 151: Inflector.foreign_key(self, separate_class_name_and_id_with_underscore) 152: end
Capitalizes the first word, turns underscores into spaces, and strips ‘_id’. Like titleize, this is meant for creating pretty output.
"employee_salary" # => "Employee salary" "author_id" # => "Author"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 138 138: def humanize 139: Inflector.humanize(self) 140: end
Replaces special characters in a string so that it may be used as part of a ‘pretty’ URL.
Examples
class Person def to_param "#{id}-#{name.parameterize}" end end @person = Person.find(1) # => #<Person id: 1, name: "Donald E. Knuth"> <%= link_to(@person.name, person_path %> # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 105 105: def parameterize(sep = '-') 106: Inflector.parameterize(self, sep) 107: end
Returns the plural form of the word in the string.
"post".pluralize # => "posts" "octopus".pluralize # => "octopi" "sheep".pluralize # => "sheep" "words".pluralize # => "words" "the blue mailman".pluralize # => "the blue mailmen" "CamelOctopus".pluralize # => "CamelOctopi"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 19 19: def pluralize 20: Inflector.pluralize(self) 21: end
The reverse of pluralize, returns the singular form of a word in a string.
"posts".singularize # => "post" "octopi".singularize # => "octopus" "sheep".singularize # => "sheep" "word".singularize # => "word" "the blue mailmen".singularize # => "the blue mailman" "CamelOctopi".singularize # => "CamelOctopus"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 31 31: def singularize 32: Inflector.singularize(self) 33: end
Creates the name of a table like Rails does for models to table names. This method uses the pluralize method on the last word in the string.
"RawScaledScorer".tableize # => "raw_scaled_scorers" "egg_and_ham".tableize # => "egg_and_hams" "fancyCategory".tableize # => "fancy_categories"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 115 115: def tableize 116: Inflector.tableize(self) 117: end
Alias for titleize
Capitalizes all the words and replaces some characters in the string to create a nicer looking title. titleize is meant for creating pretty output. It is not used in the Rails internals.
titleize is also aliased as titlecase.
"man from the boondocks".titleize # => "Man From The Boondocks" "x-men: the last stand".titleize # => "X Men: The Last Stand"
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 60 60: def titleize 61: Inflector.titleize(self) 62: end
The reverse of camelize. Makes an underscored, lowercase form from the expression in the string.
underscore will also change ’::’ to ’/’ to convert namespaces to paths.
"ActiveRecord".underscore # => "active_record" "ActiveRecord::Errors".underscore # => active_record/errors
[ show source ]
# File activesupport/lib/active_support/core_ext/string/inflections.rb, line 71 71: def underscore 72: Inflector.underscore(self) 73: end