##// END OF EJS Templates
Patch ActiveRecord::Errors#full_messages so that it contains custom values error messages....
Jean-Philippe Lang -
r2454:a64b8695c8c2
parent child
Show More
@@ -12,6 +12,36 module ActiveRecord
12 end
12 end
13 end
13 end
14
14
15 module ActiveRecord
16 class Errors
17 def full_messages(options = {})
18 full_messages = []
19
20 @errors.each_key do |attr|
21 @errors[attr].each do |message|
22 next unless message
23
24 if attr == "base"
25 full_messages << message
26 elsif attr == "custom_values"
27 # Replace the generic "custom values is invalid"
28 # with the errors on custom values
29 @base.custom_values.each do |value|
30 value.errors.each do |attr, msg|
31 full_messages << value.custom_field.name + ' ' + msg
32 end
33 end
34 else
35 attr_name = @base.class.human_attribute_name(attr)
36 full_messages << attr_name + ' ' + message
37 end
38 end
39 end
40 full_messages
41 end
42 end
43 end
44
15 module ActionView
45 module ActionView
16 module Helpers
46 module Helpers
17 module DateHelper
47 module DateHelper
@@ -63,6 +63,19 class IssueTest < Test::Unit::TestCase
63 assert_equal 'PostgreSQL', issue.custom_value_for(field).value
63 assert_equal 'PostgreSQL', issue.custom_value_for(field).value
64 end
64 end
65
65
66 def test_errors_full_messages_should_include_custom_fields_errors
67 field = IssueCustomField.find_by_name('Database')
68
69 issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'test_create', :description => 'IssueTest#test_create_with_required_custom_field')
70 assert issue.available_custom_fields.include?(field)
71 # Invalid value
72 issue.custom_field_values = { field.id => 'SQLServer' }
73
74 assert !issue.valid?
75 assert_equal 1, issue.errors.full_messages.size
76 assert_equal "Database #{I18n.translate('activerecord.errors.messages.inclusion')}", issue.errors.full_messages.first
77 end
78
66 def test_update_issue_with_required_custom_field
79 def test_update_issue_with_required_custom_field
67 field = IssueCustomField.find_by_name('Database')
80 field = IssueCustomField.find_by_name('Database')
68 field.update_attribute(:is_required, true)
81 field.update_attribute(:is_required, true)
General Comments 0
You need to be logged in to leave comments. Login now