dm-validations 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +15 -0
- data/Manifest.txt +21 -2
- data/lib/dm-validations.rb +14 -14
- data/lib/dm-validations/absent_field_validator.rb +3 -4
- data/lib/dm-validations/acceptance_validator.rb +6 -10
- data/lib/dm-validations/confirmation_validator.rb +5 -5
- data/lib/dm-validations/contextual_validators.rb +1 -1
- data/lib/dm-validations/custom_validator.rb +1 -1
- data/lib/dm-validations/format_validator.rb +6 -5
- data/lib/dm-validations/generic_validator.rb +7 -10
- data/lib/dm-validations/length_validator.rb +7 -7
- data/lib/dm-validations/method_validator.rb +2 -2
- data/lib/dm-validations/numeric_validator.rb +4 -4
- data/lib/dm-validations/primitive_validator.rb +4 -4
- data/lib/dm-validations/required_field_validator.rb +5 -5
- data/lib/dm-validations/uniqueness_validator.rb +2 -2
- data/lib/dm-validations/validation_errors.rb +34 -2
- data/lib/dm-validations/version.rb +1 -1
- data/lib/dm-validations/within_validator.rb +15 -13
- data/spec/integration/absent_field_validator_spec.rb +4 -2
- data/spec/integration/acceptance_validator_spec.rb +3 -3
- data/spec/integration/auto_validate_spec.rb +16 -9
- data/spec/integration/block_validator_spec.rb +2 -8
- data/spec/integration/confirmation_validator_spec.rb +11 -8
- data/spec/integration/contextual_validators_spec.rb +2 -1
- data/spec/integration/format_validator_spec.rb +1 -1
- data/spec/integration/length_validator/error_message_spec.rb +23 -0
- data/spec/integration/length_validator/maximum_spec.rb +31 -0
- data/spec/integration/length_validator/minimum_spec.rb +31 -0
- data/spec/integration/length_validator/range_spec.rb +95 -0
- data/spec/integration/length_validator/spec_helper.rb +12 -0
- data/spec/integration/length_validator/valid_objects_spec.rb +13 -0
- data/spec/integration/method_validator_spec.rb +3 -3
- data/spec/integration/numeric_validator/float_type_spec.rb +102 -0
- data/spec/integration/numeric_validator/integer_only_true_spec.rb +92 -0
- data/spec/integration/numeric_validator/integer_type_spec.rb +100 -0
- data/spec/integration/numeric_validator/spec_helper.rb +77 -0
- data/spec/integration/numeric_validator_spec.rb +19 -6
- data/spec/integration/primitive_validator_spec.rb +2 -1
- data/spec/integration/required_field_validator/association_spec.rb +98 -0
- data/spec/integration/required_field_validator/boolean_type_value_spec.rb +149 -0
- data/spec/integration/required_field_validator/date_type_value_spec.rb +126 -0
- data/spec/integration/required_field_validator/datetime_type_value_spec.rb +126 -0
- data/spec/integration/required_field_validator/float_type_value_spec.rb +130 -0
- data/spec/integration/required_field_validator/integer_type_value_spec.rb +98 -0
- data/spec/integration/required_field_validator/plain_old_ruby_object_spec.rb +36 -0
- data/spec/integration/required_field_validator/shared_examples.rb +24 -0
- data/spec/integration/required_field_validator/spec_helper.rb +68 -0
- data/spec/integration/required_field_validator/string_type_value_spec.rb +164 -0
- data/spec/integration/required_field_validator/text_type_value_spec.rb +46 -0
- data/spec/integration/uniqueness_validator_spec.rb +10 -8
- data/spec/integration/validation_spec.rb +25 -25
- data/spec/integration/within_validator_spec.rb +36 -11
- data/tasks/spec.rb +1 -1
- metadata +24 -5
- data/spec/integration/length_validator_spec.rb +0 -115
- data/spec/integration/required_field_validator_spec.rb +0 -93
data/History.txt
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== 0.9.10 / 2009-01-19
|
2
|
+
|
3
|
+
* 1 major enhancement:
|
4
|
+
|
5
|
+
* Major spec refactoring
|
6
|
+
|
7
|
+
* 2 minor enhancements:
|
8
|
+
|
9
|
+
* Moved all error messages into ValidationErrors.default_error_messages
|
10
|
+
* Added :allow_nil option to validates_within
|
11
|
+
|
12
|
+
* 1 bug fix:
|
13
|
+
|
14
|
+
* Fixed error messages and specs for within_validator
|
15
|
+
|
1
16
|
=== 0.9.9 / 2009-01-04
|
2
17
|
|
3
18
|
* No changes this version
|
data/Manifest.txt
CHANGED
@@ -35,11 +35,30 @@ spec/integration/contextual_validators_spec.rb
|
|
35
35
|
spec/integration/custom_validator_spec.rb
|
36
36
|
spec/integration/format_validator_spec.rb
|
37
37
|
spec/integration/generic_validator_spec.rb
|
38
|
-
spec/integration/
|
38
|
+
spec/integration/length_validator/error_message_spec.rb
|
39
|
+
spec/integration/length_validator/maximum_spec.rb
|
40
|
+
spec/integration/length_validator/minimum_spec.rb
|
41
|
+
spec/integration/length_validator/range_spec.rb
|
42
|
+
spec/integration/length_validator/spec_helper.rb
|
43
|
+
spec/integration/length_validator/valid_objects_spec.rb
|
39
44
|
spec/integration/method_validator_spec.rb
|
45
|
+
spec/integration/numeric_validator/float_type_spec.rb
|
46
|
+
spec/integration/numeric_validator/integer_only_true_spec.rb
|
47
|
+
spec/integration/numeric_validator/integer_type_spec.rb
|
48
|
+
spec/integration/numeric_validator/spec_helper.rb
|
40
49
|
spec/integration/numeric_validator_spec.rb
|
41
50
|
spec/integration/primitive_validator_spec.rb
|
42
|
-
spec/integration/
|
51
|
+
spec/integration/required_field_validator/association_spec.rb
|
52
|
+
spec/integration/required_field_validator/boolean_type_value_spec.rb
|
53
|
+
spec/integration/required_field_validator/date_type_value_spec.rb
|
54
|
+
spec/integration/required_field_validator/datetime_type_value_spec.rb
|
55
|
+
spec/integration/required_field_validator/float_type_value_spec.rb
|
56
|
+
spec/integration/required_field_validator/integer_type_value_spec.rb
|
57
|
+
spec/integration/required_field_validator/plain_old_ruby_object_spec.rb
|
58
|
+
spec/integration/required_field_validator/shared_examples.rb
|
59
|
+
spec/integration/required_field_validator/spec_helper.rb
|
60
|
+
spec/integration/required_field_validator/string_type_value_spec.rb
|
61
|
+
spec/integration/required_field_validator/text_type_value_spec.rb
|
43
62
|
spec/integration/uniqueness_validator_spec.rb
|
44
63
|
spec/integration/validation_errors_spec.rb
|
45
64
|
spec/integration/validation_spec.rb
|
data/lib/dm-validations.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'pathname'
|
3
3
|
|
4
|
-
gem 'dm-core', '~>0.9.
|
4
|
+
gem 'dm-core', '~>0.9.10'
|
5
5
|
require 'dm-core'
|
6
6
|
|
7
7
|
dir = Pathname(__FILE__).dirname.expand_path / 'dm-validations'
|
@@ -76,7 +76,7 @@ module DataMapper
|
|
76
76
|
# resource we can check if they respond to validatable? before trying to
|
77
77
|
# recursivly validate them
|
78
78
|
#
|
79
|
-
def validatable?
|
79
|
+
def validatable?
|
80
80
|
true
|
81
81
|
end
|
82
82
|
|
@@ -89,13 +89,13 @@ module DataMapper
|
|
89
89
|
# Check if a resource is valid in a given context
|
90
90
|
#
|
91
91
|
def valid?(context = :default)
|
92
|
-
self.class.validators.execute(context,self)
|
92
|
+
self.class.validators.execute(context, self)
|
93
93
|
end
|
94
94
|
|
95
95
|
# Begin a recursive walk of the model checking validity
|
96
96
|
#
|
97
97
|
def all_valid?(context = :default)
|
98
|
-
recursive_valid?(self,context,true)
|
98
|
+
recursive_valid?(self, context, true)
|
99
99
|
end
|
100
100
|
|
101
101
|
# Do recursive validity checking
|
@@ -105,11 +105,11 @@ module DataMapper
|
|
105
105
|
target.instance_variables.each do |ivar|
|
106
106
|
ivar_value = target.instance_variable_get(ivar)
|
107
107
|
if ivar_value.validatable?
|
108
|
-
valid = valid && recursive_valid?(ivar_value,context,valid)
|
108
|
+
valid = valid && recursive_valid?(ivar_value, context, valid)
|
109
109
|
elsif ivar_value.respond_to?(:each)
|
110
110
|
ivar_value.each do |item|
|
111
111
|
if item.validatable?
|
112
|
-
valid = valid && recursive_valid?(item,context,valid)
|
112
|
+
valid = valid && recursive_valid?(item, context, valid)
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
@@ -186,21 +186,21 @@ module DataMapper
|
|
186
186
|
# if it does not already exist
|
187
187
|
#
|
188
188
|
def create_context_instance_methods(context)
|
189
|
-
name = "valid_for_#{context.to_s}?"
|
189
|
+
name = "valid_for_#{context.to_s}?" # valid_for_signup?
|
190
190
|
if !self.instance_methods.include?(name)
|
191
191
|
class_eval <<-EOS, __FILE__, __LINE__
|
192
|
-
def #{name}
|
193
|
-
valid?('#{context.to_s}'.to_sym)
|
194
|
-
end
|
192
|
+
def #{name} # def valid_for_signup?
|
193
|
+
valid?('#{context.to_s}'.to_sym) # valid?('signup'.to_sym)
|
194
|
+
end # end
|
195
195
|
EOS
|
196
196
|
end
|
197
197
|
|
198
|
-
all = "all_valid_for_#{context.to_s}?"
|
198
|
+
all = "all_valid_for_#{context.to_s}?" # all_valid_for_signup?
|
199
199
|
if !self.instance_methods.include?(all)
|
200
200
|
class_eval <<-EOS, __FILE__, __LINE__
|
201
|
-
def #{all}
|
202
|
-
all_valid?('#{context.to_s}'.to_sym)
|
203
|
-
end
|
201
|
+
def #{all} # def all_valid_for_signup?
|
202
|
+
all_valid?('#{context.to_s}'.to_sym) # all_valid?('signup'.to_sym)
|
203
|
+
end # end
|
204
204
|
EOS
|
205
205
|
end
|
206
206
|
end
|
@@ -13,11 +13,10 @@ module DataMapper
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def call(target)
|
16
|
-
|
17
|
-
return true if field_value
|
16
|
+
return true if target.send(field_name).blank?
|
18
17
|
|
19
|
-
error_message = @options[:message] ||
|
20
|
-
add_error(target, error_message
|
18
|
+
error_message = @options[:message] || ValidationErrors.default_error_message(:absent, field_name)
|
19
|
+
add_error(target, error_message, field_name)
|
21
20
|
|
22
21
|
return false
|
23
22
|
end
|
@@ -7,23 +7,19 @@ module DataMapper
|
|
7
7
|
# @since 0.9
|
8
8
|
class AcceptanceValidator < GenericValidator
|
9
9
|
|
10
|
-
def self.default_message_for_field(field_name)
|
11
|
-
'%s is not accepted'.t(Extlib::Inflection.humanize(field_name))
|
12
|
-
end
|
13
|
-
|
14
10
|
def initialize(field_name, options = {})
|
15
11
|
super
|
16
12
|
@options = options
|
17
13
|
@field_name = field_name
|
18
14
|
@options[:allow_nil] = true unless @options.include?(:allow_nil)
|
19
|
-
@options[:accept] ||= ["1",1,"true",true,"t"]
|
15
|
+
@options[:accept] ||= ["1", 1, "true", true, "t"]
|
20
16
|
@options[:accept] = Array(@options[:accept])
|
21
17
|
end
|
22
18
|
|
23
19
|
def call(target)
|
24
20
|
unless valid?(target)
|
25
|
-
error_message = @options[:message] ||
|
26
|
-
add_error(target, error_message
|
21
|
+
error_message = @options[:message] || ValidationErrors.default_error_message(:accepted, field_name)
|
22
|
+
add_error(target, error_message, field_name)
|
27
23
|
return false
|
28
24
|
end
|
29
25
|
|
@@ -31,7 +27,7 @@ module DataMapper
|
|
31
27
|
end
|
32
28
|
|
33
29
|
def valid?(target)
|
34
|
-
field_value = target.
|
30
|
+
field_value = target.send(field_name)
|
35
31
|
return true if @options[:allow_nil] && field_value.nil?
|
36
32
|
return false if !@options[:allow_nil] && field_value.nil?
|
37
33
|
|
@@ -48,7 +44,7 @@ module DataMapper
|
|
48
44
|
# @option :allow_nil<Boolean> true if nil is allowed, false if nil is not
|
49
45
|
# allowed. Default is true.
|
50
46
|
# @option :accept<Array> a list of accepted values.
|
51
|
-
# Default are ["1",1,"true",true,"t"]).
|
47
|
+
# Default are ["1", 1, "true", true, "t"]).
|
52
48
|
#
|
53
49
|
# @example [Usage]
|
54
50
|
# require 'dm-validations'
|
@@ -64,7 +60,7 @@ module DataMapper
|
|
64
60
|
# # a call to valid? will return false unless:
|
65
61
|
# # license_agreement is nil or "1"
|
66
62
|
# # and
|
67
|
-
# # terms_accepted is one of ["1",1,"true",true,"t"]
|
63
|
+
# # terms_accepted is one of ["1", 1, "true", true, "t"]
|
68
64
|
#
|
69
65
|
def validates_is_accepted(*fields)
|
70
66
|
opts = opts_from_validator_args(fields)
|
@@ -16,8 +16,8 @@ module DataMapper
|
|
16
16
|
|
17
17
|
def call(target)
|
18
18
|
unless valid?(target)
|
19
|
-
error_message = @options[:message] ||
|
20
|
-
add_error(target, error_message
|
19
|
+
error_message = @options[:message] || ValidationErrors.default_error_message(:confirmation, field_name)
|
20
|
+
add_error(target, error_message, field_name)
|
21
21
|
return false
|
22
22
|
end
|
23
23
|
|
@@ -25,12 +25,12 @@ module DataMapper
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def valid?(target)
|
28
|
-
field_value = target.
|
28
|
+
field_value = target.send(field_name)
|
29
29
|
return true if @options[:allow_nil] && field_value.nil?
|
30
30
|
return false if !@options[:allow_nil] && field_value.nil?
|
31
31
|
|
32
|
-
if target.class.properties.has_property?(
|
33
|
-
return true unless target.attribute_dirty?(
|
32
|
+
if target.class.properties.has_property?(field_name)
|
33
|
+
return true unless target.attribute_dirty?(field_name)
|
34
34
|
end
|
35
35
|
|
36
36
|
confirm_value = target.instance_variable_get("@#{@confirm_field_name}")
|
@@ -50,7 +50,7 @@ module DataMapper
|
|
50
50
|
# error_message = @options[:message] || error_message || '%s is invalid'.t(field)
|
51
51
|
# error_message = error_message.call(field, value) if Proc === error_message
|
52
52
|
#
|
53
|
-
# add_error(target, error_message
|
53
|
+
# add_error(target, error_message, @field_name)
|
54
54
|
#end
|
55
55
|
|
56
56
|
#return valid
|
@@ -24,7 +24,7 @@ module DataMapper
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def call(target)
|
27
|
-
value = target.validation_property_value(
|
27
|
+
value = target.validation_property_value(field_name)
|
28
28
|
return true if @options[:allow_nil] && value.nil?
|
29
29
|
|
30
30
|
validation = @options[:as] || @options[:with]
|
@@ -36,16 +36,17 @@ module DataMapper
|
|
36
36
|
when Proc then validator.call(value)
|
37
37
|
when Regexp then value =~ validator
|
38
38
|
else
|
39
|
-
raise UnknownValidationFormat, "Can't determine how to validate #{target.class}##{
|
39
|
+
raise UnknownValidationFormat, "Can't determine how to validate #{target.class}##{field_name} with #{validator.inspect}"
|
40
40
|
end
|
41
41
|
|
42
42
|
return true if valid
|
43
43
|
|
44
|
-
|
45
|
-
|
44
|
+
error_message = @options[:message] || ValidationErrors.default_error_message(:invalid, field_name)
|
45
|
+
|
46
|
+
field = Extlib::Inflection.humanize(field_name)
|
46
47
|
error_message = error_message.call(field, value) if error_message.respond_to?(:call)
|
47
48
|
|
48
|
-
add_error(target, error_message,
|
49
|
+
add_error(target, error_message, field_name)
|
49
50
|
|
50
51
|
false
|
51
52
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
module DataMapper
|
2
3
|
module Validate
|
3
4
|
|
@@ -13,8 +14,8 @@ module DataMapper
|
|
13
14
|
# @since 0.9
|
14
15
|
class GenericValidator
|
15
16
|
|
16
|
-
attr_accessor :if_clause
|
17
|
-
|
17
|
+
attr_accessor :if_clause, :unless_clause
|
18
|
+
attr_reader :field_name
|
18
19
|
|
19
20
|
# Construct a validator. Capture the :if and :unless clauses when present.
|
20
21
|
#
|
@@ -28,8 +29,8 @@ module DataMapper
|
|
28
29
|
# that is sub-classing this GenericValidator
|
29
30
|
#
|
30
31
|
def initialize(field, opts = {})
|
31
|
-
@if_clause
|
32
|
-
@unless_clause = opts.
|
32
|
+
@if_clause = opts.delete(:if)
|
33
|
+
@unless_clause = opts.delete(:unless)
|
33
34
|
end
|
34
35
|
|
35
36
|
# Add an error message to a target resource. If the error corresponds to a
|
@@ -43,7 +44,7 @@ module DataMapper
|
|
43
44
|
# TODO - should the field_name for a general message be :default???
|
44
45
|
#
|
45
46
|
def add_error(target, message, field_name = :general)
|
46
|
-
target.errors.add(field_name,message)
|
47
|
+
target.errors.add(field_name, message)
|
47
48
|
end
|
48
49
|
|
49
50
|
# Call the validator. "call" is used so the operation is BoundMethod and
|
@@ -53,11 +54,7 @@ module DataMapper
|
|
53
54
|
# against
|
54
55
|
# @return <Boolean> true if valid, otherwise false
|
55
56
|
def call(target)
|
56
|
-
raise "DataMapper::Validate::GenericValidator::call must be overriden in
|
57
|
-
end
|
58
|
-
|
59
|
-
def field_name
|
60
|
-
@field_name
|
57
|
+
raise NotImplementedError, "DataMapper::Validate::GenericValidator::call must be overriden in a subclass"
|
61
58
|
end
|
62
59
|
|
63
60
|
# Determines if this validator should be run against the
|
@@ -24,14 +24,14 @@ module DataMapper
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def call(target)
|
27
|
-
field_value = target.validation_property_value(
|
27
|
+
field_value = target.validation_property_value(field_name)
|
28
28
|
return true if @options[:allow_nil] && field_value.nil?
|
29
29
|
|
30
30
|
field_value = '' if field_value.nil?
|
31
31
|
|
32
32
|
# XXX: HACK seems hacky to do this on every validation, probably should
|
33
33
|
# do this elsewhere?
|
34
|
-
field = Extlib::Inflection.humanize(
|
34
|
+
field = Extlib::Inflection.humanize(field_name)
|
35
35
|
min = @range ? @range.min : @min
|
36
36
|
max = @range ? @range.max : @max
|
37
37
|
equal = @equal
|
@@ -39,25 +39,25 @@ module DataMapper
|
|
39
39
|
case @validation_method
|
40
40
|
when :range then
|
41
41
|
unless valid = @range.include?(field_value.size)
|
42
|
-
error_message =
|
42
|
+
error_message = ValidationErrors.default_error_message(:length_between, field, min, max)
|
43
43
|
end
|
44
44
|
when :min then
|
45
45
|
unless valid = field_value.size >= min
|
46
|
-
error_message =
|
46
|
+
error_message = ValidationErrors.default_error_message(:too_short, field, min)
|
47
47
|
end
|
48
48
|
when :max then
|
49
49
|
unless valid = field_value.size <= max
|
50
|
-
error_message =
|
50
|
+
error_message = ValidationErrors.default_error_message(:too_long, field, max)
|
51
51
|
end
|
52
52
|
when :equals then
|
53
53
|
unless valid = field_value.size == equal
|
54
|
-
error_message =
|
54
|
+
error_message = ValidationErrors.default_error_message(:wrong_length, field, equal)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
error_message = @options[:message] || error_message
|
59
59
|
|
60
|
-
add_error(target, error_message,
|
60
|
+
add_error(target, error_message, field_name) unless valid
|
61
61
|
|
62
62
|
return valid
|
63
63
|
end
|
@@ -14,8 +14,8 @@ module DataMapper
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def call(target)
|
17
|
-
result,message = target.send(@options[:method])
|
18
|
-
add_error(target,message
|
17
|
+
result, message = target.send(@options[:method])
|
18
|
+
add_error(target, message, field_name) unless result
|
19
19
|
result
|
20
20
|
end
|
21
21
|
|
@@ -25,7 +25,7 @@ module DataMapper
|
|
25
25
|
|
26
26
|
if @options[:integer_only]
|
27
27
|
return true if value =~ /\A[+-]?\d+\z/
|
28
|
-
error_message ||=
|
28
|
+
error_message ||= ValidationErrors.default_error_message(:not_an_integer, field_name)
|
29
29
|
else
|
30
30
|
# FIXME: if precision and scale are not specified, can we assume that it is an integer?
|
31
31
|
# probably not, as floating point numbers don't have hard
|
@@ -51,17 +51,17 @@ module DataMapper
|
|
51
51
|
# for floats, if scale is not set
|
52
52
|
|
53
53
|
#total number of digits is less or equal precision
|
54
|
-
return true if value.gsub(/[^\d]/,'').length <= precision
|
54
|
+
return true if value.gsub(/[^\d]/, '').length <= precision
|
55
55
|
|
56
56
|
#number of digits before decimal == precision, and the number is x.0. same as scale = 0
|
57
57
|
return true if value =~ /\A[+-]?(?:\d{1,#{precision}}(?:\.0)?)\z/
|
58
58
|
else
|
59
59
|
return true if value =~ /\A[+-]?(?:\d+|\d*\.\d+)\z/
|
60
60
|
end
|
61
|
-
error_message ||=
|
61
|
+
error_message ||= ValidationErrors.default_error_message(:not_a_number, field_name)
|
62
62
|
end
|
63
63
|
|
64
|
-
add_error(target, error_message,
|
64
|
+
add_error(target, error_message, field_name)
|
65
65
|
|
66
66
|
# TODO: check the gt, gte, lt, lte, and eq options
|
67
67
|
|
@@ -13,12 +13,12 @@ module DataMapper
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def call(target)
|
16
|
-
value = target.validation_property_value(
|
17
|
-
property = target.validation_property(
|
16
|
+
value = target.validation_property_value(field_name)
|
17
|
+
property = target.validation_property(field_name)
|
18
18
|
return true if value.nil? || value.kind_of?(property.primitive) || property.primitive == TrueClass && value.kind_of?(FalseClass)
|
19
19
|
|
20
20
|
error_message = @options[:message] || default_error(property)
|
21
|
-
add_error(target, error_message,
|
21
|
+
add_error(target, error_message, field_name)
|
22
22
|
|
23
23
|
false
|
24
24
|
end
|
@@ -26,7 +26,7 @@ module DataMapper
|
|
26
26
|
protected
|
27
27
|
|
28
28
|
def default_error(property)
|
29
|
-
|
29
|
+
ValidationErrors.default_error_message(:primitive, field_name, property.primitive)
|
30
30
|
end
|
31
31
|
|
32
32
|
end # class PrimitiveValidator
|
@@ -13,12 +13,12 @@ module DataMapper
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def call(target)
|
16
|
-
value = target.validation_property_value(
|
17
|
-
property = target.validation_property(
|
16
|
+
value = target.validation_property_value(field_name)
|
17
|
+
property = target.validation_property(field_name)
|
18
18
|
return true if present?(value, property)
|
19
19
|
|
20
20
|
error_message = @options[:message] || default_error(property)
|
21
|
-
add_error(target, error_message,
|
21
|
+
add_error(target, error_message, field_name)
|
22
22
|
|
23
23
|
false
|
24
24
|
end
|
@@ -33,8 +33,8 @@ module DataMapper
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def default_error(property)
|
36
|
-
actual = boolean_type?(property) ?
|
37
|
-
|
36
|
+
actual = boolean_type?(property) ? :nil : :blank
|
37
|
+
ValidationErrors.default_error_message(actual, field_name)
|
38
38
|
end
|
39
39
|
|
40
40
|
# Is +property+ a boolean property?
|