1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Be sure to convert namespaced names to we have 'Parrots name' instead of 'Parrots.name' in error messages.

This commit is contained in:
José Valim 2009-12-31 13:44:15 +01:00
parent dcafe995bf
commit 5fdd0e80a4
4 changed files with 11 additions and 3 deletions

View file

@ -97,13 +97,14 @@ module ActiveModel
full_messages = []
each do |attribute, messages|
messages = Array.wrap(messages)
messages = Array(messages)
next if messages.empty?
if attribute == :base
messages.each {|m| full_messages << m }
else
attr_name = @base.class.human_attribute_name(attribute)
attr_name = attribute.to_s.gsub('.', '_').humanize
attr_name = @base.class.human_attribute_name(attribute, :default => attr_name)
options = { :default => ' ', :scope => @base.class.i18n_scope }
prefix = attr_name + I18n.t(:"errors.format.separator", options)

View file

@ -57,7 +57,7 @@ class I18nValidationTest < ActiveModel::TestCase
def test_errors_full_messages_translates_human_attribute_name_for_model_attributes
@person.errors.add('name', 'empty')
I18n.expects(:translate).with(:"person.name", :default => ['Name'], :scope => [:activemodel, :attributes], :count => 1).returns('Name')
I18n.expects(:translate).with(:"person.name", :default => ['Name', 'Name'], :scope => [:activemodel, :attributes], :count => 1).returns('Name')
@person.errors.full_messages
end

View file

@ -71,6 +71,12 @@ class ValidationsTest < ActiveModel::TestCase
assert_equal 2, r.errors.count
end
def test_errors_on_nested_attributes_expands_name
t = Topic.new
t.errors["replies.name"] << "can't be blank"
assert_equal ["Replies name can't be blank"], t.errors.full_messages
end
def test_errors_on_base
r = Reply.new
r.content = "Mismatch"

View file

@ -982,6 +982,7 @@ module AutosaveAssociationOnACollectionAssociationTests
assert !@pirate.valid?
assert_equal ["cannot be blank"], @pirate.errors["#{@association_name}.name"]
assert_equal ["#{@association_name.to_s.titleize} name cannot be blank"], @pirate.errors.full_messages
assert @pirate.errors[@association_name].empty?
ensure
I18n.backend.store_translations(:en, :activerecord => { :errors => { :models =>