dm-validations 0.10.2 → 1.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +36 -0
- data/Gemfile +143 -0
- data/README.rdoc +52 -102
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/dm-validations.gemspec +126 -14
- data/lib/dm-validations.rb +78 -18
- data/lib/dm-validations/auto_validate.rb +27 -23
- data/lib/dm-validations/contextual_validators.rb +3 -3
- data/lib/dm-validations/formats/email.rb +3 -3
- data/lib/dm-validations/formats/url.rb +3 -3
- data/lib/dm-validations/support/context.rb +1 -1
- data/lib/dm-validations/validation_errors.rb +5 -7
- data/lib/dm-validations/validators/absent_field_validator.rb +13 -9
- data/lib/dm-validations/validators/acceptance_validator.rb +10 -7
- data/lib/dm-validations/validators/block_validator.rb +3 -3
- data/lib/dm-validations/validators/confirmation_validator.rb +10 -7
- data/lib/dm-validations/validators/format_validator.rb +14 -10
- data/lib/dm-validations/validators/generic_validator.rb +3 -3
- data/lib/dm-validations/validators/length_validator.rb +10 -7
- data/lib/dm-validations/validators/method_validator.rb +3 -3
- data/lib/dm-validations/validators/numeric_validator.rb +25 -14
- data/lib/dm-validations/validators/primitive_validator.rb +12 -8
- data/lib/dm-validations/validators/required_field_validator.rb +12 -9
- data/lib/dm-validations/validators/uniqueness_validator.rb +9 -6
- data/lib/dm-validations/validators/within_validator.rb +3 -3
- data/spec/fixtures/barcode.rb +10 -2
- data/spec/fixtures/basketball_court.rb +7 -7
- data/spec/fixtures/basketball_player.rb +3 -3
- data/spec/fixtures/beta_tester_account.rb +4 -4
- data/spec/fixtures/bill_of_landing.rb +7 -7
- data/spec/fixtures/boat_dock.rb +2 -2
- data/spec/fixtures/city.rb +1 -1
- data/spec/fixtures/company.rb +7 -7
- data/spec/fixtures/corporate_world.rb +24 -26
- data/spec/fixtures/country.rb +1 -1
- data/spec/fixtures/currency.rb +4 -4
- data/spec/fixtures/ethernet_frame.rb +5 -5
- data/spec/fixtures/event.rb +2 -2
- data/spec/fixtures/g3_concert.rb +3 -3
- data/spec/fixtures/jabberwock.rb +2 -2
- data/spec/fixtures/kayak.rb +2 -2
- data/spec/fixtures/lernean_hydra.rb +3 -3
- data/spec/fixtures/mathematical_function.rb +2 -2
- data/spec/fixtures/memory_object.rb +3 -3
- data/spec/fixtures/mittelschnauzer.rb +3 -3
- data/spec/fixtures/motor_launch.rb +1 -1
- data/spec/fixtures/page.rb +3 -3
- data/spec/fixtures/phone_number.rb +2 -2
- data/spec/fixtures/pirogue.rb +2 -2
- data/spec/fixtures/programming_language.rb +3 -3
- data/spec/fixtures/reservation.rb +5 -5
- data/spec/fixtures/scm_operation.rb +42 -45
- data/spec/fixtures/sms_message.rb +1 -1
- data/spec/fixtures/udp_packet.rb +3 -3
- data/spec/integration/absent_field_validator/absent_field_validator_spec.rb +6 -6
- data/spec/integration/acceptance_validator/acceptance_validator_spec.rb +3 -3
- data/spec/integration/automatic_validation/inferred_length_validation_spec.rb +5 -5
- data/spec/integration/automatic_validation/spec_helper.rb +1 -1
- data/spec/integration/block_validator/block_validator_spec.rb +2 -2
- data/spec/integration/conditional_validation/if_condition_spec.rb +3 -3
- data/spec/integration/confirmation_validator/confirmation_validator_spec.rb +3 -3
- data/spec/integration/datamapper_models/association_validation_spec.rb +5 -5
- data/spec/integration/datamapper_models/inheritance_spec.rb +6 -6
- data/spec/integration/duplicated_validations/duplicated_validations_spec.rb +3 -3
- data/spec/integration/format_validator/email_format_validator_spec.rb +6 -6
- data/spec/integration/format_validator/format_validator_spec.rb +8 -8
- data/spec/integration/format_validator/regexp_validator_spec.rb +4 -4
- data/spec/integration/format_validator/url_format_validator_spec.rb +4 -4
- data/spec/integration/length_validator/default_value_spec.rb +3 -3
- data/spec/integration/length_validator/equality_spec.rb +4 -4
- data/spec/integration/length_validator/error_message_spec.rb +3 -3
- data/spec/integration/length_validator/maximum_spec.rb +3 -3
- data/spec/integration/length_validator/minimum_spec.rb +3 -3
- data/spec/integration/length_validator/range_spec.rb +3 -3
- data/spec/integration/method_validator/method_validator_spec.rb +8 -8
- data/spec/integration/numeric_validator/equality_with_float_type_spec.rb +7 -7
- data/spec/integration/numeric_validator/equality_with_integer_type_spec.rb +5 -5
- data/spec/integration/numeric_validator/float_type_spec.rb +3 -3
- data/spec/integration/numeric_validator/gt_with_float_type_spec.rb +3 -3
- data/spec/integration/numeric_validator/gte_with_float_type_spec.rb +3 -3
- data/spec/integration/numeric_validator/lt_with_float_type_spec.rb +3 -3
- data/spec/integration/numeric_validator/lte_with_float_type_spec.rb +3 -3
- data/spec/integration/primitive_validator/primitive_validator_spec.rb +4 -4
- data/spec/integration/pure_ruby_objects/plain_old_ruby_object_validation_spec.rb +4 -4
- data/spec/integration/required_field_validator/association_spec.rb +19 -51
- data/spec/integration/required_field_validator/boolean_type_value_spec.rb +4 -1
- data/spec/integration/required_field_validator/date_type_value_spec.rb +4 -2
- data/spec/integration/required_field_validator/datetime_type_value_spec.rb +4 -2
- data/spec/integration/required_field_validator/float_type_value_spec.rb +4 -2
- data/spec/integration/required_field_validator/integer_type_value_spec.rb +4 -2
- data/spec/integration/required_field_validator/plain_old_ruby_object_spec.rb +6 -4
- data/spec/integration/required_field_validator/string_type_value_spec.rb +3 -1
- data/spec/integration/required_field_validator/text_type_value_spec.rb +3 -1
- data/spec/integration/shared/valid_and_invalid_model.rb +8 -0
- data/spec/integration/uniqueness_validator/uniqueness_validator_spec.rb +29 -25
- data/spec/integration/within_validator/within_validator_spec.rb +6 -6
- data/spec/public/resource_spec.rb +47 -9
- data/spec/spec_helper.rb +13 -27
- data/spec/unit/contextual_validators/emptiness_spec.rb +4 -4
- data/spec/unit/contextual_validators/execution_spec.rb +6 -6
- data/spec/unit/contextual_validators/spec_helper.rb +3 -3
- data/spec/unit/generic_validator/equality_operator_spec.rb +7 -7
- data/spec/unit/validation_errors/adding_spec.rb +2 -2
- data/spec/unit/validation_errors/emptiness_spec.rb +2 -2
- data/spec/unit/validation_errors/enumerable_spec.rb +2 -2
- data/tasks/local_gemfile.rake +18 -0
- data/tasks/spec.rake +0 -3
- metadata +157 -25
@@ -1,5 +1,5 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
@@ -52,9 +52,9 @@ module DataMapper
|
|
52
52
|
define_method(method_name, block)
|
53
53
|
opts = opts_from_validator_args(fields)
|
54
54
|
opts[:method] = method_name
|
55
|
-
add_validator_to_context(opts, fields.empty? ? [method_name] : fields, DataMapper::
|
55
|
+
add_validator_to_context(opts, fields.empty? ? [method_name] : fields, DataMapper::Validations::MethodValidator)
|
56
56
|
end
|
57
57
|
|
58
58
|
end # module ValidatesWithMethod
|
59
|
-
end # module
|
59
|
+
end # module Validations
|
60
60
|
end # module DataMapper
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
module DataMapper
|
3
|
-
module
|
3
|
+
module Validations
|
4
4
|
|
5
5
|
##
|
6
6
|
#
|
@@ -40,7 +40,8 @@ module DataMapper
|
|
40
40
|
end
|
41
41
|
end # class ConfirmationValidator
|
42
42
|
|
43
|
-
module
|
43
|
+
module ValidatesConfirmation
|
44
|
+
extend Deprecate
|
44
45
|
|
45
46
|
##
|
46
47
|
# Validates that the given attribute is confirmed by another attribute.
|
@@ -64,19 +65,21 @@ module DataMapper
|
|
64
65
|
# attr_accessor :password_confirmation
|
65
66
|
# attr_accessor :email_repeated
|
66
67
|
#
|
67
|
-
#
|
68
|
-
#
|
68
|
+
# validates_confirmation_of :password
|
69
|
+
# validates_confirmation_of :email, :confirm => :email_repeated
|
69
70
|
#
|
70
71
|
# # a call to valid? will return false unless:
|
71
72
|
# # password == password_confirmation
|
72
73
|
# # and
|
73
74
|
# # email == email_repeated
|
74
75
|
#
|
75
|
-
def
|
76
|
+
def validates_confirmation_of(*fields)
|
76
77
|
opts = opts_from_validator_args(fields)
|
77
|
-
add_validator_to_context(opts, fields, DataMapper::
|
78
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::ConfirmationValidator)
|
78
79
|
end
|
79
80
|
|
81
|
+
deprecate :validates_is_confirmed, :validates_confirmation_of
|
82
|
+
|
80
83
|
end # module ValidatesIsConfirmed
|
81
|
-
end # module
|
84
|
+
end # module Validations
|
82
85
|
end # module DataMapper
|
@@ -5,7 +5,8 @@ require Pathname(__FILE__).dirname.expand_path + ".." + 'formats/email'
|
|
5
5
|
require Pathname(__FILE__).dirname.expand_path + ".." + 'formats/url'
|
6
6
|
|
7
7
|
module DataMapper
|
8
|
-
module
|
8
|
+
module Validations
|
9
|
+
class UnknownValidationFormat < ::ArgumentError; end
|
9
10
|
|
10
11
|
##
|
11
12
|
#
|
@@ -14,8 +15,8 @@ module DataMapper
|
|
14
15
|
class FormatValidator < GenericValidator
|
15
16
|
|
16
17
|
FORMATS = {}
|
17
|
-
include DataMapper::
|
18
|
-
include DataMapper::
|
18
|
+
include DataMapper::Validations::Format::Email
|
19
|
+
include DataMapper::Validations::Format::Url
|
19
20
|
|
20
21
|
def initialize(field_name, options = {})
|
21
22
|
super
|
@@ -56,6 +57,7 @@ module DataMapper
|
|
56
57
|
|
57
58
|
|
58
59
|
module ValidatesFormat
|
60
|
+
extend Deprecate
|
59
61
|
|
60
62
|
##
|
61
63
|
# Validates that the attribute is in the specified format. You may use the
|
@@ -69,8 +71,8 @@ module DataMapper
|
|
69
71
|
# @option :with<Format, Proc, Regexp> an alias for :as
|
70
72
|
#
|
71
73
|
# @details [Pre-defined Formats]
|
72
|
-
# :email_address (format is specified in DataMapper::
|
73
|
-
# :url (format is specified in DataMapper::
|
74
|
+
# :email_address (format is specified in DataMapper::Validations::Format::Email)
|
75
|
+
# :url (format is specified in DataMapper::Validations::Format::Url)
|
74
76
|
#
|
75
77
|
# @example [Usage]
|
76
78
|
# require 'dm-validations'
|
@@ -81,19 +83,21 @@ module DataMapper
|
|
81
83
|
# property :email, String
|
82
84
|
# property :zip_code, String
|
83
85
|
#
|
84
|
-
#
|
85
|
-
#
|
86
|
+
# validates_format_of :email, :as => :email_address
|
87
|
+
# validates_format_of :zip_code, :with => /^\d{5}$/
|
86
88
|
#
|
87
89
|
# # a call to valid? will return false unless:
|
88
90
|
# # email is formatted like an email address
|
89
91
|
# # and
|
90
92
|
# # zip_code is a string of 5 digits
|
91
93
|
#
|
92
|
-
def
|
94
|
+
def validates_format_of(*fields)
|
93
95
|
opts = opts_from_validator_args(fields)
|
94
|
-
add_validator_to_context(opts, fields, DataMapper::
|
96
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::FormatValidator)
|
95
97
|
end
|
96
98
|
|
99
|
+
deprecate :validates_format, :validates_format_of
|
100
|
+
|
97
101
|
end # module ValidatesFormat
|
98
|
-
end # module
|
102
|
+
end # module Validations
|
99
103
|
end # module DataMapper
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
module DataMapper
|
3
|
-
module
|
3
|
+
module Validations
|
4
4
|
|
5
5
|
# All validators extend this base class. Validators must:
|
6
6
|
#
|
@@ -33,7 +33,7 @@ module DataMapper
|
|
33
33
|
@options = options.except(:if, :unless)
|
34
34
|
@if_clause = options[:if]
|
35
35
|
@unless_clause = options[:unless]
|
36
|
-
@humanized_field_name =
|
36
|
+
@humanized_field_name = ActiveSupport::Inflector.humanize(@field_name)
|
37
37
|
end
|
38
38
|
|
39
39
|
# Add an error message to a target resource. If the error corresponds to a
|
@@ -145,5 +145,5 @@ module DataMapper
|
|
145
145
|
|
146
146
|
alias to_s inspect
|
147
147
|
end # class GenericValidator
|
148
|
-
end # module
|
148
|
+
end # module Validations
|
149
149
|
end # module DataMapper
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
class LengthValidator < GenericValidator
|
4
4
|
|
5
5
|
# Initialize a length validator
|
@@ -156,6 +156,7 @@ module DataMapper
|
|
156
156
|
end # class LengthValidator
|
157
157
|
|
158
158
|
module ValidatesLength
|
159
|
+
extend Deprecate
|
159
160
|
|
160
161
|
# Validates that the length of the attribute is equal to, less than,
|
161
162
|
# greater than or within a certain range (depending upon the options
|
@@ -186,20 +187,22 @@ module DataMapper
|
|
186
187
|
# property low, Integer
|
187
188
|
# property just_right, Integer
|
188
189
|
#
|
189
|
-
#
|
190
|
-
#
|
191
|
-
#
|
190
|
+
# validates_length_of :high, :min => 100000000000
|
191
|
+
# validates_length_of :low, :equals => 0
|
192
|
+
# validates_length_of :just_right, :within => 1..10
|
192
193
|
#
|
193
194
|
# # a call to valid? will return false unless:
|
194
195
|
# # high is greater than or equal to 100000000000
|
195
196
|
# # low is equal to 0
|
196
197
|
# # just_right is between 1 and 10 (inclusive of both 1 and 10)
|
197
198
|
#
|
198
|
-
def
|
199
|
+
def validates_length_of(*fields)
|
199
200
|
opts = opts_from_validator_args(fields)
|
200
|
-
add_validator_to_context(opts, fields, DataMapper::
|
201
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::LengthValidator)
|
201
202
|
end
|
202
203
|
|
204
|
+
deprecate :validates_length, :validates_length_of
|
205
|
+
|
203
206
|
end # module ValidatesLength
|
204
|
-
end # module
|
207
|
+
end # module Validations
|
205
208
|
end # module DataMapper
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
@@ -60,9 +60,9 @@ module DataMapper
|
|
60
60
|
# end
|
61
61
|
def validates_with_method(*fields)
|
62
62
|
opts = opts_from_validator_args(fields)
|
63
|
-
add_validator_to_context(opts, fields, DataMapper::
|
63
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::MethodValidator)
|
64
64
|
end
|
65
65
|
|
66
66
|
end # module ValidatesWithMethod
|
67
|
-
end # module
|
67
|
+
end # module Validations
|
68
68
|
end # module DataMapper
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
6
6
|
# @author Guy van den Berg
|
7
7
|
# @since 0.9
|
8
|
-
class
|
8
|
+
class NumericalityValidator < GenericValidator
|
9
9
|
|
10
10
|
def call(target)
|
11
11
|
value = target.validation_property_value(field_name)
|
@@ -32,7 +32,7 @@ module DataMapper
|
|
32
32
|
private
|
33
33
|
|
34
34
|
def integer_only?
|
35
|
-
options.fetch(:integer_only, false)
|
35
|
+
options[:only_integer] || options.fetch(:integer_only, false)
|
36
36
|
end
|
37
37
|
|
38
38
|
def value_as_string(value)
|
@@ -62,6 +62,13 @@ module DataMapper
|
|
62
62
|
def validate_with_comparison(value, cmp, expected, error_message_name, errors, negated = false)
|
63
63
|
return if expected.nil?
|
64
64
|
|
65
|
+
# XXX: workaround for jruby. This is needed because the jruby
|
66
|
+
# compiler optimizes a bit too far with magic variables like $~.
|
67
|
+
# the value.send line sends $~. Inserting this line makes sure the
|
68
|
+
# jruby compiler does not optimise here.
|
69
|
+
# see http://jira.codehaus.org/browse/JRUBY-3765
|
70
|
+
$~ = nil if RUBY_PLATFORM[/java/]
|
71
|
+
|
65
72
|
comparison = value.send(cmp, expected)
|
66
73
|
return if negated ? !comparison : comparison
|
67
74
|
|
@@ -94,32 +101,33 @@ module DataMapper
|
|
94
101
|
end
|
95
102
|
|
96
103
|
def validate_gt(value, errors)
|
97
|
-
validate_with_comparison(value, :>, options[:gt], :greater_than, errors)
|
104
|
+
validate_with_comparison(value, :>, options[:gt] || options[:greater_than], :greater_than, errors)
|
98
105
|
end
|
99
106
|
|
100
107
|
def validate_lt(value, errors)
|
101
|
-
validate_with_comparison(value, :<, options[:lt], :less_than, errors)
|
108
|
+
validate_with_comparison(value, :<, options[:lt] || options[:less_than], :less_than, errors)
|
102
109
|
end
|
103
110
|
|
104
111
|
def validate_gte(value, errors)
|
105
|
-
validate_with_comparison(value, :>=, options[:gte], :greater_than_or_equal_to, errors)
|
112
|
+
validate_with_comparison(value, :>=, options[:gte] || options[:greater_than_or_equal_to], :greater_than_or_equal_to, errors)
|
106
113
|
end
|
107
114
|
|
108
115
|
def validate_lte(value, errors)
|
109
|
-
validate_with_comparison(value, :<=, options[:lte], :less_than_or_equal_to, errors)
|
116
|
+
validate_with_comparison(value, :<=, options[:lte] || options[:less_than_or_equal_to], :less_than_or_equal_to, errors)
|
110
117
|
end
|
111
118
|
|
112
119
|
def validate_eq(value, errors)
|
113
|
-
eq = options[:eq] || options[:equal] || options[:equals] || options[:exactly]
|
120
|
+
eq = options[:eq] || options[:equal] || options[:equals] || options[:exactly] || options[:equal_to]
|
114
121
|
validate_with_comparison(value, :==, eq, :equal_to, errors)
|
115
122
|
end
|
116
123
|
|
117
124
|
def validate_ne(value, errors)
|
118
|
-
validate_with_comparison(value, :==, options[:ne], :not_equal_to, errors, true)
|
125
|
+
validate_with_comparison(value, :==, options[:ne] || options[:not_equal_to], :not_equal_to, errors, true)
|
119
126
|
end
|
120
|
-
end # class
|
127
|
+
end # class NumericalityValidator
|
121
128
|
|
122
|
-
module
|
129
|
+
module ValidatesNumericality
|
130
|
+
extend Deprecate
|
123
131
|
|
124
132
|
# Validate whether a field is numeric
|
125
133
|
#
|
@@ -163,11 +171,14 @@ module DataMapper
|
|
163
171
|
#
|
164
172
|
# :integer_only => true
|
165
173
|
# Use to restrict allowed values to integers
|
166
|
-
|
174
|
+
#
|
175
|
+
def validates_numericality_of(*fields)
|
167
176
|
opts = opts_from_validator_args(fields)
|
168
|
-
add_validator_to_context(opts, fields, DataMapper::
|
177
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::NumericalityValidator)
|
169
178
|
end
|
170
179
|
|
180
|
+
deprecate :validates_is_number, :validates_numericality_of
|
181
|
+
|
171
182
|
end # module ValidatesIsNumber
|
172
|
-
end # module
|
183
|
+
end # module Validations
|
173
184
|
end # module DataMapper
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
6
6
|
# @author Dirkjan Bussink
|
7
7
|
# @since 0.9
|
8
|
-
class
|
8
|
+
class PrimitiveTypeValidator < GenericValidator
|
9
9
|
def call(target)
|
10
10
|
value = target.validation_property_value(field_name)
|
11
11
|
property = target.validation_property(field_name)
|
@@ -24,9 +24,11 @@ module DataMapper
|
|
24
24
|
ValidationErrors.default_error_message(:primitive, field_name, property.primitive)
|
25
25
|
end
|
26
26
|
|
27
|
-
end # class
|
27
|
+
end # class PrimitiveTypeValidator
|
28
28
|
|
29
|
-
module
|
29
|
+
module ValidatesPrimitiveType
|
30
|
+
|
31
|
+
extend Deprecate
|
30
32
|
|
31
33
|
##
|
32
34
|
# Validates that the specified attribute is of the correct primitive type.
|
@@ -39,17 +41,19 @@ module DataMapper
|
|
39
41
|
#
|
40
42
|
# property :birth_date, Date
|
41
43
|
#
|
42
|
-
#
|
44
|
+
# validates_primitive_type_of :birth_date
|
43
45
|
#
|
44
46
|
# # a call to valid? will return false unless
|
45
47
|
# # the birth_date is something that can be properly
|
46
48
|
# # casted into a Date object.
|
47
49
|
# end
|
48
|
-
def
|
50
|
+
def validates_primitive_type_of(*fields)
|
49
51
|
opts = opts_from_validator_args(fields)
|
50
|
-
add_validator_to_context(opts, fields, DataMapper::
|
52
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::PrimitiveTypeValidator)
|
51
53
|
end
|
52
54
|
|
55
|
+
deprecate :validates_is_primitive, :validates_primitive_type_of
|
56
|
+
|
53
57
|
end # module ValidatesPresent
|
54
|
-
end # module
|
58
|
+
end # module Validations
|
55
59
|
end # module DataMapper
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
6
6
|
# @author Guy van den Berg
|
7
7
|
# @since 0.9
|
8
|
-
class
|
8
|
+
class PresenceValidator < GenericValidator
|
9
9
|
def call(target)
|
10
10
|
value = target.validation_property_value(field_name)
|
11
11
|
property = target.validation_property(field_name)
|
@@ -40,9 +40,10 @@ module DataMapper
|
|
40
40
|
property ? property.primitive == TrueClass : false
|
41
41
|
end
|
42
42
|
|
43
|
-
end # class
|
43
|
+
end # class PresenceValidator
|
44
44
|
|
45
|
-
module
|
45
|
+
module ValidatesPresence
|
46
|
+
extend Deprecate
|
46
47
|
|
47
48
|
##
|
48
49
|
# Validates that the specified attribute is present.
|
@@ -66,17 +67,19 @@ module DataMapper
|
|
66
67
|
# property :another_required, String
|
67
68
|
# property :yet_again, String
|
68
69
|
#
|
69
|
-
#
|
70
|
-
#
|
70
|
+
# validates_presence_of :required_attribute
|
71
|
+
# validates_presence_of :another_required, :yet_again
|
71
72
|
#
|
72
73
|
# # a call to valid? will return false unless
|
73
74
|
# # all three attributes are !blank?
|
74
75
|
# end
|
75
|
-
def
|
76
|
+
def validates_presence_of(*fields)
|
76
77
|
opts = opts_from_validator_args(fields)
|
77
|
-
add_validator_to_context(opts, fields, DataMapper::
|
78
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::PresenceValidator)
|
78
79
|
end
|
79
80
|
|
81
|
+
deprecate :validates_present, :validates_presence_of
|
82
|
+
|
80
83
|
end # module ValidatesPresent
|
81
|
-
end # module
|
84
|
+
end # module Validations
|
82
85
|
end # module DataMapper
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
2
|
+
module Validations
|
3
3
|
|
4
4
|
##
|
5
5
|
#
|
6
6
|
# @author Guy van den Berg
|
7
7
|
# @since 0.9
|
8
8
|
class UniquenessValidator < GenericValidator
|
9
|
-
include
|
9
|
+
include DataMapper::Assertions
|
10
10
|
|
11
11
|
def initialize(field_name, options = {})
|
12
12
|
assert_kind_of 'scope', options[:scope], Array, Symbol if options.has_key?(:scope)
|
@@ -43,15 +43,18 @@ module DataMapper
|
|
43
43
|
end
|
44
44
|
end # class UniquenessValidator
|
45
45
|
|
46
|
-
module
|
46
|
+
module ValidatesUniqueness
|
47
|
+
extend Deprecate
|
47
48
|
|
48
49
|
# Validate the uniqueness of a field
|
49
50
|
#
|
50
|
-
def
|
51
|
+
def validates_uniqueness_of(*fields)
|
51
52
|
opts = opts_from_validator_args(fields)
|
52
|
-
add_validator_to_context(opts, fields, DataMapper::
|
53
|
+
add_validator_to_context(opts, fields, DataMapper::Validations::UniquenessValidator)
|
53
54
|
end
|
54
55
|
|
56
|
+
deprecate :validates_is_unique, :validates_uniqueness_of
|
57
|
+
|
55
58
|
end # module ValidatesIsUnique
|
56
|
-
end # module
|
59
|
+
end # module Validations
|
57
60
|
end # module DataMapper
|