couchrest 0.38 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/README.md +8 -8
  2. data/Rakefile +3 -4
  3. data/couchrest.gemspec +25 -105
  4. data/history.txt +5 -4
  5. data/lib/couchrest.rb +31 -52
  6. data/lib/couchrest/{core/database.rb → database.rb} +6 -11
  7. data/lib/couchrest/{core/design.rb → design.rb} +2 -2
  8. data/lib/couchrest/{core/document.rb → document.rb} +1 -1
  9. data/lib/couchrest/helper/attachments.rb +29 -0
  10. data/lib/couchrest/middlewares/logger.rb +3 -3
  11. data/lib/couchrest/monkeypatches.rb +1 -71
  12. data/lib/couchrest/{core/response.rb → response.rb} +0 -0
  13. data/lib/couchrest/{core/rest_api.rb → rest_api.rb} +8 -12
  14. data/lib/couchrest/{core/server.rb → server.rb} +0 -2
  15. data/spec/couchrest/{core/couchrest_spec.rb → couchrest_spec.rb} +15 -9
  16. data/spec/couchrest/{core/database_spec.rb → database_spec.rb} +4 -4
  17. data/spec/couchrest/{core/design_spec.rb → design_spec.rb} +2 -2
  18. data/spec/couchrest/{core/document_spec.rb → document_spec.rb} +1 -1
  19. data/spec/couchrest/{core/server_spec.rb → server_spec.rb} +2 -2
  20. data/spec/spec.opts +0 -1
  21. data/spec/spec_helper.rb +0 -4
  22. metadata +32 -133
  23. data/examples/model/example.rb +0 -144
  24. data/lib/couchrest/core/adapters/restclient.rb +0 -35
  25. data/lib/couchrest/core/http_abstraction.rb +0 -48
  26. data/lib/couchrest/core/view.rb +0 -4
  27. data/lib/couchrest/mixins.rb +0 -4
  28. data/lib/couchrest/mixins/attachments.rb +0 -31
  29. data/lib/couchrest/mixins/attribute_protection.rb +0 -74
  30. data/lib/couchrest/mixins/callbacks.rb +0 -532
  31. data/lib/couchrest/mixins/class_proxy.rb +0 -124
  32. data/lib/couchrest/mixins/collection.rb +0 -260
  33. data/lib/couchrest/mixins/design_doc.rb +0 -103
  34. data/lib/couchrest/mixins/document_queries.rb +0 -80
  35. data/lib/couchrest/mixins/extended_attachments.rb +0 -70
  36. data/lib/couchrest/mixins/extended_document_mixins.rb +0 -9
  37. data/lib/couchrest/mixins/properties.rb +0 -158
  38. data/lib/couchrest/mixins/validation.rb +0 -246
  39. data/lib/couchrest/mixins/views.rb +0 -173
  40. data/lib/couchrest/more/casted_model.rb +0 -58
  41. data/lib/couchrest/more/extended_document.rb +0 -310
  42. data/lib/couchrest/more/property.rb +0 -58
  43. data/lib/couchrest/more/typecast.rb +0 -180
  44. data/lib/couchrest/support/blank.rb +0 -42
  45. data/lib/couchrest/support/rails.rb +0 -42
  46. data/lib/couchrest/validation/auto_validate.rb +0 -157
  47. data/lib/couchrest/validation/contextual_validators.rb +0 -78
  48. data/lib/couchrest/validation/validation_errors.rb +0 -125
  49. data/lib/couchrest/validation/validators/absent_field_validator.rb +0 -74
  50. data/lib/couchrest/validation/validators/confirmation_validator.rb +0 -107
  51. data/lib/couchrest/validation/validators/format_validator.rb +0 -122
  52. data/lib/couchrest/validation/validators/formats/email.rb +0 -66
  53. data/lib/couchrest/validation/validators/formats/url.rb +0 -43
  54. data/lib/couchrest/validation/validators/generic_validator.rb +0 -120
  55. data/lib/couchrest/validation/validators/length_validator.rb +0 -139
  56. data/lib/couchrest/validation/validators/method_validator.rb +0 -89
  57. data/lib/couchrest/validation/validators/numeric_validator.rb +0 -109
  58. data/lib/couchrest/validation/validators/required_field_validator.rb +0 -114
  59. data/spec/couchrest/more/attribute_protection_spec.rb +0 -150
  60. data/spec/couchrest/more/casted_extended_doc_spec.rb +0 -73
  61. data/spec/couchrest/more/casted_model_spec.rb +0 -406
  62. data/spec/couchrest/more/extended_doc_attachment_spec.rb +0 -135
  63. data/spec/couchrest/more/extended_doc_inherited_spec.rb +0 -40
  64. data/spec/couchrest/more/extended_doc_spec.rb +0 -807
  65. data/spec/couchrest/more/extended_doc_subclass_spec.rb +0 -98
  66. data/spec/couchrest/more/extended_doc_view_spec.rb +0 -456
  67. data/spec/couchrest/more/property_spec.rb +0 -628
  68. data/spec/fixtures/more/article.rb +0 -35
  69. data/spec/fixtures/more/card.rb +0 -22
  70. data/spec/fixtures/more/cat.rb +0 -20
  71. data/spec/fixtures/more/course.rb +0 -22
  72. data/spec/fixtures/more/event.rb +0 -8
  73. data/spec/fixtures/more/invoice.rb +0 -17
  74. data/spec/fixtures/more/person.rb +0 -9
  75. data/spec/fixtures/more/question.rb +0 -6
  76. data/spec/fixtures/more/service.rb +0 -12
  77. data/spec/fixtures/more/user.rb +0 -22
@@ -1,78 +0,0 @@
1
- # Extracted from dm-validations 0.9.10
2
- #
3
- # Copyright (c) 2007 Guy van den Berg
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- module CouchRest
25
- module Validation
26
-
27
- ##
28
- #
29
- # @author Guy van den Berg
30
- # @since 0.9
31
- class ContextualValidators
32
-
33
- def dump
34
- contexts.each_pair do |key, context|
35
- puts "Key=#{key} Context: #{context}"
36
- end
37
- end
38
-
39
- # Get a hash of named context validators for the resource
40
- #
41
- # @return <Hash> a hash of validators <GenericValidator>
42
- def contexts
43
- @contexts ||= {}
44
- end
45
-
46
- # Return an array of validators for a named context
47
- #
48
- # @return <Array> An array of validators
49
- def context(name)
50
- contexts[name] ||= []
51
- end
52
-
53
- # Clear all named context validators off of the resource
54
- #
55
- def clear!
56
- contexts.clear
57
- end
58
-
59
- # Execute all validators in the named context against the target
60
- #
61
- # @param <Symbol> named_context the context we are validating against
62
- # @param <Object> target the resource that we are validating
63
- # @return <Boolean> true if all are valid, otherwise false
64
- def execute(named_context, target)
65
- raise(ArgumentError, 'invalid context specified') if !named_context || (contexts.length > 0 && !contexts[named_context])
66
- target.errors.clear!
67
- result = true
68
- context(named_context).each do |validator|
69
- next unless validator.execute?(target)
70
- result = false unless validator.call(target)
71
- end
72
-
73
- result
74
- end
75
-
76
- end # module ContextualValidators
77
- end # module Validation
78
- end # module CouchRest
@@ -1,125 +0,0 @@
1
- # Extracted from dm-validations 0.9.10
2
- #
3
- # Copyright (c) 2007 Guy van den Berg
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- module CouchRest
25
- module Validation
26
-
27
- ##
28
- #
29
- # @author Guy van den Berg
30
- # @since 0.9
31
- class ValidationErrors
32
-
33
- include Enumerable
34
-
35
- @@default_error_messages = {
36
- :absent => '%s must be absent',
37
- :inclusion => '%s must be one of [%s]',
38
- :invalid => '%s has an invalid format',
39
- :confirmation => '%s does not match the confirmation',
40
- :accepted => "%s is not accepted",
41
- :nil => '%s must not be nil',
42
- :blank => '%s must not be blank',
43
- :length_between => '%s must be between %s and %s characters long',
44
- :too_long => '%s must be less than %s characters long',
45
- :too_short => '%s must be more than %s characters long',
46
- :wrong_length => '%s must be %s characters long',
47
- :taken => '%s is already taken',
48
- :not_a_number => '%s must be a number',
49
- :not_an_integer => '%s must be an integer',
50
- :greater_than => '%s must be greater than %s',
51
- :greater_than_or_equal_to => "%s must be greater than or equal to %s",
52
- :equal_to => "%s must be equal to %s",
53
- :less_than => '%s must be less than %s',
54
- :less_than_or_equal_to => "%s must be less than or equal to %s",
55
- :value_between => '%s must be between %s and %s',
56
- :primitive => '%s must be of type %s'
57
- }
58
-
59
- # Holds a hash with all the default error messages that can be replaced by your own copy or localizations.
60
- cattr_writer :default_error_messages
61
-
62
- def self.default_error_message(key, field, *values)
63
- field = CouchRest.humanize(field)
64
- @@default_error_messages[key] % [field, *values].flatten
65
- end
66
-
67
- # Clear existing validation errors.
68
- def clear!
69
- errors.clear
70
- end
71
-
72
- # Add a validation error. Use the field_name :general if the errors does
73
- # not apply to a specific field of the Resource.
74
- #
75
- # @param <Symbol> field_name the name of the field that caused the error
76
- # @param <String> message the message to add
77
- def add(field_name, message)
78
- (errors[field_name.to_sym] ||= []) << message
79
- end
80
-
81
- # Collect all errors into a single list.
82
- def full_messages
83
- errors.inject([]) do |list, pair|
84
- list += pair.last
85
- end
86
- end
87
-
88
- # Return validation errors for a particular field_name.
89
- #
90
- # @param <Symbol> field_name the name of the field you want an error for
91
- def on(field_name)
92
- errors_for_field = errors[field_name.to_sym]
93
- errors_for_field.blank? ? nil : errors_for_field
94
- end
95
-
96
- def each
97
- errors.map.each do |k, v|
98
- next if v.blank?
99
- yield(v)
100
- end
101
- end
102
-
103
- def empty?
104
- entries.empty?
105
- end
106
-
107
- # Return size of errors hash
108
- #
109
- # Allows us to play nicely with Rails' helpers
110
- def count
111
- errors.size
112
- end
113
-
114
- def method_missing(meth, *args, &block)
115
- errors.send(meth, *args, &block)
116
- end
117
-
118
- private
119
- def errors
120
- @errors ||= {}
121
- end
122
-
123
- end # class ValidationErrors
124
- end # module Validation
125
- end # module CouchRest
@@ -1,74 +0,0 @@
1
- # Extracted from dm-validations 0.9.10
2
- #
3
- # Copyright (c) 2007 Guy van den Berg
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- module CouchRest
25
- module Validation
26
-
27
- ##
28
- #
29
- # @author Guy van den Berg
30
- class AbsentFieldValidator < GenericValidator
31
-
32
- def initialize(field_name, options={})
33
- super
34
- @field_name, @options = field_name, options
35
- end
36
-
37
- def call(target)
38
- value = target.send(field_name)
39
- return true if (value.nil? || (value.respond_to?(:empty?) && value.empty?))
40
-
41
- error_message = @options[:message] || ValidationErrors.default_error_message(:absent, field_name)
42
- add_error(target, error_message, field_name)
43
-
44
- return false
45
- end
46
- end # class AbsentFieldValidator
47
-
48
- module ValidatesAbsent
49
-
50
- ##
51
- #
52
- # @example [Usage]
53
- #
54
- # class Page
55
- #
56
- # property :unwanted_attribute, String
57
- # property :another_unwanted, String
58
- # property :yet_again, String
59
- #
60
- # validates_absent :unwanted_attribute
61
- # validates_absent :another_unwanted, :yet_again
62
- #
63
- # # a call to valid? will return false unless
64
- # # all three attributes are blank
65
- # end
66
- #
67
- def validates_absent(*fields)
68
- opts = opts_from_validator_args(fields)
69
- add_validator_to_context(opts, fields, CouchRest::Validation::AbsentFieldValidator)
70
- end
71
-
72
- end # module ValidatesAbsent
73
- end # module Validation
74
- end # module CouchRest
@@ -1,107 +0,0 @@
1
- # Extracted from dm-validations 0.9.10
2
- #
3
- # Copyright (c) 2007 Guy van den Berg
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- module CouchRest
25
- module Validation
26
-
27
- ##
28
- #
29
- # @author Guy van den Berg
30
- # @since 0.9
31
- class ConfirmationValidator < GenericValidator
32
-
33
- def initialize(field_name, options = {})
34
- super
35
- @options = options
36
- @field_name, @confirm_field_name = field_name, (options[:confirm] || "#{field_name}_confirmation").to_sym
37
- @options[:allow_nil] = true unless @options.has_key?(:allow_nil)
38
- end
39
-
40
- def call(target)
41
- unless valid?(target)
42
- error_message = @options[:message] || ValidationErrors.default_error_message(:confirmation, field_name)
43
- add_error(target, error_message, field_name)
44
- return false
45
- end
46
-
47
- return true
48
- end
49
-
50
- def valid?(target)
51
- field_value = target.send(field_name)
52
- return true if @options[:allow_nil] && field_value.nil?
53
- return false if !@options[:allow_nil] && field_value.nil?
54
-
55
- confirm_value = target.instance_variable_get("@#{@confirm_field_name}")
56
- field_value == confirm_value
57
- end
58
-
59
- end # class ConfirmationValidator
60
-
61
- module ValidatesIsConfirmed
62
-
63
- ##
64
- # Validates that the given attribute is confirmed by another attribute.
65
- # A common use case scenario is when you require a user to confirm their
66
- # password, for which you use both password and password_confirmation
67
- # attributes.
68
- #
69
- # @option :allow_nil<Boolean> true/false (default is true)
70
- # @option :confirm<Symbol> the attribute that you want to validate
71
- # against (default is firstattr_confirmation)
72
- #
73
- # @example [Usage]
74
- #
75
- # class Page < Hash
76
- # include CouchRest::ExtendedModel
77
- # include CouchRest::Validations
78
- #
79
- # property :password, String
80
- # property :email, String
81
- # attr_accessor :password_confirmation
82
- # attr_accessor :email_repeated
83
- #
84
- # validates_confirmation_of :password
85
- # validates_confirmation_of :email, :confirm => :email_repeated
86
- #
87
- # # a call to valid? will return false unless:
88
- # # password == password_confirmation
89
- # # and
90
- # # email == email_repeated
91
- #
92
- def validates_confirmation_of(*fields)
93
- opts = opts_from_validator_args(fields)
94
- add_validator_to_context(opts, fields, CouchRest::Validation::ConfirmationValidator)
95
- end
96
-
97
- def validates_is_confirmed(*fields)
98
- warn "[DEPRECATION] `validates_is_confirmed` is deprecated. Please use `validates_confirmation_of` instead."
99
- validates_confirmation_of(*fields)
100
- end
101
-
102
-
103
-
104
-
105
- end # module ValidatesIsConfirmed
106
- end # module Validation
107
- end # module CouchRest
@@ -1,122 +0,0 @@
1
- # Extracted from dm-validations 0.9.10
2
- #
3
- # Copyright (c) 2007 Guy van den Berg
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- require 'pathname'
25
- require Pathname(__FILE__).dirname.expand_path + 'formats/email'
26
- require Pathname(__FILE__).dirname.expand_path + 'formats/url'
27
-
28
- module CouchRest
29
- module Validation
30
-
31
- ##
32
- #
33
- # @author Guy van den Berg
34
- # @since 0.9
35
- class FormatValidator < GenericValidator
36
-
37
- FORMATS = {}
38
- include CouchRest::Validation::Format::Email
39
- include CouchRest::Validation::Format::Url
40
-
41
- def initialize(field_name, options = {}, &b)
42
- super(field_name, options)
43
- @field_name, @options = field_name, options
44
- @options[:allow_nil] = false unless @options.has_key?(:allow_nil)
45
- end
46
-
47
- def call(target)
48
- value = target.validation_property_value(field_name)
49
- return true if @options[:allow_nil] && value.nil?
50
-
51
- validation = @options[:as] || @options[:with]
52
-
53
- raise "No such predefined format '#{validation}'" if validation.is_a?(Symbol) && !FORMATS.has_key?(validation)
54
- validator = validation.is_a?(Symbol) ? FORMATS[validation][0] : validation
55
-
56
- valid = case validator
57
- when Proc then validator.call(value)
58
- when Regexp then value =~ validator
59
- else
60
- raise UnknownValidationFormat, "Can't determine how to validate #{target.class}##{field_name} with #{validator.inspect}"
61
- end
62
-
63
- return true if valid
64
-
65
- error_message = @options[:message] || ValidationErrors.default_error_message(:invalid, field_name)
66
-
67
- field = CouchRest.humanize(field_name)
68
- error_message = error_message.call(field, value) if error_message.respond_to?(:call)
69
-
70
- add_error(target, error_message, field_name)
71
-
72
- false
73
- end
74
-
75
- #class UnknownValidationFormat < StandardError; end
76
-
77
- end # class FormatValidator
78
-
79
- module ValidatesFormat
80
-
81
- ##
82
- # Validates that the attribute is in the specified format. You may use the
83
- # :as (or :with, it's an alias) option to specify the pre-defined format
84
- # that you want to validate against. You may also specify your own format
85
- # via a Proc or Regexp passed to the the :as or :with options.
86
- #
87
- # @option :allow_nil<Boolean> true/false (default is true)
88
- # @option :as<Format, Proc, Regexp> the pre-defined format, Proc or Regexp to validate against
89
- # @option :with<Format, Proc, Regexp> an alias for :as
90
- #
91
- # @details [Pre-defined Formats]
92
- # :email_address (format is specified in DataMapper::Validation::Format::Email)
93
- # :url (format is specified in DataMapper::Validation::Format::Url)
94
- #
95
- # @example [Usage]
96
- #
97
- # class Page
98
- #
99
- # property :email, String
100
- # property :zip_code, String
101
- #
102
- # validates_format_of :email, :as => :email_address
103
- # validates_format_of :zip_code, :with => /^\d{5}$/
104
- #
105
- # # a call to valid? will return false unless:
106
- # # email is formatted like an email address
107
- # # and
108
- # # zip_code is a string of 5 digits
109
- #
110
- def validates_format_of(*fields)
111
- opts = opts_from_validator_args(fields)
112
- add_validator_to_context(opts, fields, CouchRest::Validation::FormatValidator)
113
- end
114
-
115
- def validates_format(*fields)
116
- warn "[DEPRECATION] `validates_format` is deprecated. Please use `validates_format_of` instead."
117
- validates_format_of(*fields)
118
- end
119
-
120
- end # module ValidatesFormat
121
- end # module Validation
122
- end # module CouchRest