Method: ActiveSupport::Inflector#humanize
- Defined in:
- activesupport/lib/active_support/inflector/methods.rb
permalink #humanize(lower_case_and_underscored_word, capitalize: true, keep_id_suffix: false) ⇒ Object
Tweaks an attribute name for display to end users.
Specifically, performs these transformations:
-
Applies human inflection rules to the argument.
-
Deletes leading underscores, if any.
-
Removes an “_id” suffix if present.
-
Replaces underscores with spaces, if any.
-
Downcases all words except acronyms.
-
Capitalizes the first word.
The capitalization of the first word can be turned off by setting the :capitalize
option to false (default is true).
The trailing ‘_id’ can be kept and capitalized by setting the optional parameter keep_id_suffix
to true (default is false).
humanize('employee_salary') # => "Employee salary"
humanize('author_id') # => "Author"
humanize('author_id', capitalize: false) # => "author"
humanize('_id') # => "Id"
humanize('author_id', keep_id_suffix: true) # => "Author id"
If “SSL” was defined to be an acronym:
humanize('ssl_error') # => "SSL error"
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'activesupport/lib/active_support/inflector/methods.rb', line 133 def humanize(lower_case_and_underscored_word, capitalize: true, keep_id_suffix: false) result = lower_case_and_underscored_word.to_s.dup inflections.humans.each { |(rule, replacement)| break if result.sub!(rule, replacement) } result.tr!("_", " ") result.lstrip! unless keep_id_suffix result.delete_suffix!(" id") end result.gsub!(/([a-z\d]+)/i) do |match| match.downcase! inflections.acronyms[match] || match end if capitalize result.sub!(/\A\w/) do |match| match.upcase! match end end result end |