--- old/activemodel-3.0.0.beta/lib/active_model/errors.rb 2010-03-26 12:58:30.000000000 +0100 +++ new/activemodel-3.0.0.beta/lib/active_model/errors.rb 2010-03-26 12:58:39.000000000 +0100 @@ -213,6 +213,12 @@ messages.each {|m| full_messages << m } else attr_name = attribute.to_s.gsub('.', '_').humanize + if attribute.to_s.match(/\./) + attr_array = attribute.to_s.split('.') + attribute = attr_array.pop.to_sym + @base = attr_array.pop.singularize.camelize.constantize.new + end attr_name = @base.class.human_attribute_name(attribute, :default => attr_name) options = { :default => "{{attribute}} {{message}}", :attribute => attr_name }