Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Changed ActiveRecord::Base.human_name to underscore the class name be…

…fore it humanizes it

This gives you 'Post comment' rather than 'Postcomment' by default.

Signed-off-by: Michael Koziarski <>
[#2120 state:committed]
  • Loading branch information...
commit 7d548f795d226f57278f8bdd36298c9552421053 1 parent 085db5e
Justin French justinfrench authored NZKoz committed
6 activerecord/lib/active_record/base.rb
@@ -1404,14 +1404,14 @@ def human_attribute_name(attribute_key_name, options = {})
# Transform the modelname into a more humane format, using I18n.
- # Defaults to the basic humanize method.
+ # By default, it will underscore then humanize the class name (BlogPost.human_name #=> "Blog post").
# Default scope of the translation is activerecord.models
# Specify +options+ with additional translating options.
def human_name(options = {})
defaults = do |klass|
- end
- defaults <<
+ end
+ defaults <<
I18n.translate(defaults.shift, {:scope => [:activerecord, :models], :count => 1, :default => defaults}.merge(options))
8 activerecord/test/cases/reflection_test.rb
@@ -5,14 +5,20 @@
require 'models/company_in_module'
require 'models/subscriber'
require 'models/pirate'
+require 'models/price_estimate'
class ReflectionTest < ActiveRecord::TestCase
- fixtures :topics, :customers, :companies, :subscribers
+ fixtures :topics, :customers, :companies, :subscribers, :price_estimates
def setup
@first = Topic.find(1)
+ def test_human_name
+ assert_equal "Price estimate", PriceEstimate.human_name
+ assert_equal "Subscriber", Subscriber.human_name
+ end
def test_column_null_not_null
subscriber = Subscriber.find(:first)
assert subscriber.column_for_attribute("name").null

2 comments on commit 7d548f7

Francesc Esplugas

Commited faster than I expected. Is it possible to have in 2.3.4?

Please sign in to comment.
Something went wrong with that request. Please try again.