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"
Methods
Public Instance methods
camelcase(first_letter = :upper)

Alias for camelize

camelize(first_letter = :upper)

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"
This method is also aliased as camelcase
    # 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
classify()

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"
     # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 129
129:         def classify
130:           Inflector.classify(self)
131:         end
constantize()

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
     # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 161
161:         def constantize
162:           Inflector.constantize(self)
163:         end
dasherize()

Replaces underscores with dashes in the string.

  "puni_puni" # => "puni-puni"
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 78
78:         def dasherize
79:           Inflector.dasherize(self)
80:         end
demodulize()

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

  "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
  "Inflections".demodulize                                       # => "Inflections"
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 86
86:         def demodulize
87:           Inflector.demodulize(self)
88:         end
foreign_key(separate_class_name_and_id_with_underscore = true)

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"
     # 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
humanize()

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"
     # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 138
138:         def humanize
139:           Inflector.humanize(self)
140:         end
parameterize(sep = '-')

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>
     # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 105
105:         def parameterize(sep = '-')
106:           Inflector.parameterize(self, sep)
107:         end
pluralize()

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"
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 19
19:         def pluralize
20:           Inflector.pluralize(self)
21:         end
singularize()

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"
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 31
31:         def singularize
32:           Inflector.singularize(self)
33:         end
tableize()

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"
     # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 115
115:         def tableize
116:           Inflector.tableize(self)
117:         end
titlecase()

Alias for titleize

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"
This method is also aliased as titlecase
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 60
60:         def titleize
61:           Inflector.titleize(self)
62:         end
underscore()

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
    # File activesupport/lib/active_support/core_ext/string/inflections.rb, line 71
71:         def underscore
72:           Inflector.underscore(self)
73:         end