instance method
underscore
Ruby on Rails 7.0.10
Since v2.2.3Signature
underscore(camel_cased_word)
Makes an underscored, lowercase form from the expression in the string.
Changes ‘::’ to ‘/’ to convert namespaces to paths.
underscore('ActiveModel') # => "active_model" underscore('ActiveModel::Errors') # => "active_model/errors"
As a rule of thumb you can think of underscore as the inverse of #camelize, though there are cases where that does not hold:
camelize(underscore('SSLError')) # => "SslError"
Parameters
-
camel_cased_wordreq
Source
# File activesupport/lib/active_support/inflector/methods.rb, line 96
def underscore(camel_cased_word)
return camel_cased_word.to_s unless /[A-Z-]|::/.match?(camel_cased_word)
word = camel_cased_word.to_s.gsub("::", "/")
word.gsub!(inflections.acronyms_underscore_regex) { "#{$1 && '_' }#{$2.downcase}" }
word.gsub!(/([A-Z])(?=[A-Z][a-z])|([a-z\d])(?=[A-Z])/) { ($1 || $2) << "_" }
word.tr!("-", "_")
word.downcase!
word
end
Defined in activesupport/lib/active_support/inflector/methods.rb line 96
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveSupport::Inflector