Core Extensions String Inflection

suggest change

String#pluralize

Returns of plural form of the string. Optionally takes a count parameter and returns singular form if count == 1. Also accepts a locale parameter for language-specific pluralization.

'post'.pluralize             # => "posts"'octopus'.pluralize          # => "octopi"'sheep'.pluralize            # => "sheep"'words'.pluralize            # => "words"'the blue mailman'.pluralize # => "the blue mailmen"'CamelOctopus'.pluralize     # => "CamelOctopi"'apple'.pluralize(1)         # => "apple"'apple'.pluralize(2)         # => "apples"'ley'.pluralize(:es)         # => "leyes"'ley'.pluralize(1, :es)      # => "ley"

String#singularize

Returns the singular form of the string. Accepts an optional locale parameter.

'posts'.singularize            # => "post"'octopi'.singularize           # => "octopus"'sheep'.singularize            # => "sheep"'word'.singularize             # => "word"'the blue mailmen'.singularize # => "the blue mailman"'CamelOctopi'.singularize      # => "CamelOctopus"'leyes'.singularize(:es)       # => "ley"

String#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.

'Module'.constantize  # => Module'Class'.constantize   # => Class'blargle'.constantize # => NameError: wrong constant name blargle

String#safe_constantize

Performs a constantize but returns nil instead of raising NameError.

'Module'.safe_constantize  # => Module'Class'.safe_constantize   # => Class'blargle'.safe_constantize # => nil

String#camelize

Converts strings to UpperCamelCase by default, if :lower is given as param converts to lowerCamelCase instead.

alias: camelcase

Note: 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"

String#titleize

Capitalizes all the words and replaces some characters in the string to create a nicer looking title.

alias: titlecase

'man from the boondocks'.titleize # => "Man From The Boondocks"'x-men: the last stand'.titleize  # => "X Men: The Last Stand"

String#underscore

Makes an underscored, lowercase form from the expression in the string. The reverse of camelize.

Note: underscore will also change :: to / to convert namespaces to paths.

'ActiveModel'.underscore         # => "active_model"'ActiveModel::Errors'.underscore # => "active_model/errors"

String#dasherize

Replaces underscores with dashes in the string.

'puni_puni'.dasherize # => "puni-puni"

String#demodulize

Removes the module part from the constant expression in the string.

'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections"'Inflections'.demodulize                                       # => "Inflections"'::Inflections'.demodulize                                     # => "Inflections"''.demodulize                                                  # => ''

String#deconstantize

Removes the rightmost segment from the constant expression in the string.

'Net::HTTP'.deconstantize   # => "Net"'::Net::HTTP'.deconstantize # => "::Net"'String'.deconstantize      # => ""'::String'.deconstantize    # => ""''.deconstantize            # => ""

String#parameterize

Replaces special characters in a string so that it may be used as part of a ‘pretty’ URL.

"Donald E. Knuth".parameterize # => "donald-e-knuth"

Preserve the case of the characters in a string with the :preserve_case argument.

"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"

A very common use-case for parameterize is to override the to_param method of an ActiveRecord model to support more descriptive url slugs.

class Person < ActiveRecord::Basedef to_param"#{id}-#{name.parameterize}"endendPerson.find(1).to_param # => "1-donald-e-knuth"

String#tableize

Creates the name of a table like Rails does for models to table names. Pluralizes the last word in the string.

'RawScaledScorer'.tableize # => "raw_scaled_scorers"'ham_and_egg'.tableize     # => "ham_and_eggs"'fancyCategory'.tableize   # => "fancy_categories"

String#classify

Returns a class name string from a plural table name like Rails does for table names to models.

'ham_and_eggs'.classify # => "HamAndEgg"'posts'.classify        # => "Post"

String#humanize

Capitalizes the first word, turns underscores into spaces, and strips a trailing _id if present.

'employee_salary'.humanize              # => "Employee salary"'author_id'.humanize                    # => "Author"'author_id'.humanize(capitalize: false) # => "author"'_id'.humanize                          # => "Id"

String#upcase_first

Converts just the first character to uppercase.

'what a Lovely Day'.upcase_first # => "What a Lovely Day"'w'.upcase_first                 # => "W"''.upcase_first                  # => ""

String#foreign_key

Creates a foreign key name from a class name. Pass false param to disable adding \_ between name and id.

'Message'.foreign_key        # => "message_id"'Message'.foreign_key(false) # => "messageid"'Admin::Post'.foreign_key    # => "post_id"

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:


ActiveSupport:
*Core Extensions String Inflection

Table Of Contents
37ActiveSupport
55CSV