dm-validations 0.10.2 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|