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.sub!(/\A_+/, "")
      unless keep_id_suffix
        result.sub!(/_id\z/, "")
      end
      result.tr!("_", " ")

      result.gsub!(/([a-z\d]*)/i) do |match|
        "#{inflections.acronyms[match.downcase] || match.downcase}"
      end

      if capitalize
        result.sub!(/\A\w/) { |match| match.upcase }
      end

      result
    end
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.sub!(/\A_+/, "")
      unless keep_id_suffix
        result.sub!(/_id\z/, "")
      end
      result.tr!("_", " ")

      result.gsub!(/([a-z\d]*)/i) do |match|
        "#{inflections.acronyms[match.downcase] || match.downcase}"
      end

      if capitalize
        result.sub!(/\A\w/) { |match| match.upcase }
      end

      result
    end
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 a "_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"