activemodel-validators 1.1.0 → 1.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09e9d34a28a1db45b7ff83d9c3fb77e92625a333
4
- data.tar.gz: d42c29a1b6138e1302bba11d9a1c89a8f4eb8e37
3
+ metadata.gz: a3e3d6ba7a3262bbbe57a2c20e90a9a9bfcb19be
4
+ data.tar.gz: 6ad2eb5ae67287dacc7b1c684dc70d2533dabcf9
5
5
  SHA512:
6
- metadata.gz: 852cc4d4c762f37c00ae02cea0fb5dd5970301e1ce114f9b2e47473e1deaa01396e1eb734f4b96ac8edc5113953cad4c108d7facebac4d464d6fad97910abd3f
7
- data.tar.gz: 447e539fb66b6451c13962167e96b6d73a25337a48630493b4fbb9a216204523a07b5df109b1545023188b4d48cbb420bb6f8befcc0356c88e6f8692fded844b
6
+ metadata.gz: 840f7dff2d3b512b2f5b4471901c7ba2ddd42f4d2520d3e47a38779286c3bf9e4ec1a4e2ae0e460cec056747d45f07733c91135f3da3b27711af57677c430cc4
7
+ data.tar.gz: 45e68afce515e74156fdf6ddd2643905e556c578149a8ec2d4efad8d0fab3eb11e861f3943ecb7b221bf84f2d8c6aa99f729e6dadcdd3ce097b88da813c9107e
data/Readme.md CHANGED
@@ -10,11 +10,14 @@ Example Usage
10
10
  class Thing < ActiveRecord::Base
11
11
  validates :birthdate, greater_than: { value: Date.new(1900), message: 'must be later than 1900' }
12
12
  validates :birthdate, less_than: { value: Time.zone.now.years_ago(1).to_date+1, message: 'must be at least 1 year ago' }
13
- validates :end_date, greater_than: {attr: :begin_date, operator_text: 'later than'}
13
+ validates :end_date, greater_than: { attr: :begin_date, operator_text: 'later than' }
14
14
 
15
- # shortcut for greater_than: { value: 1, operator: :>=, operator_text: 'at least' }
15
+ # shortcut for greater_than: { value: 1, operator: :>= }
16
16
  validates :how_many_pies, at_least: { value: 1 }
17
17
 
18
+ # shortcut for less_or_greater_than: { attr: :how_many_people, operator: :== }
19
+ validates :how_many_gifts, equal_to: { attr: :how_many_people }
20
+
18
21
  # Because presence: true doesn't work for boolean attributes!
19
22
  validates :is_18_or_older, boolean_presence: true
20
23
 
@@ -0,0 +1,16 @@
1
+ require 'activemodel-validators/less_or_greater_than_validator'
2
+
3
+ module ActiveModel
4
+ module Validations
5
+ class EqualToValidator < LessOrGreaterThanValidator
6
+ protected
7
+ def default_operator
8
+ :==
9
+ end
10
+
11
+ def allowed_operators
12
+ [:==]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -17,6 +17,10 @@ module ActiveModel
17
17
  raise NotImplementedError, 'must be defined in subclass'
18
18
  end
19
19
 
20
+ def allowed_operators
21
+ [:<, :<=, :>, :>=, :==]
22
+ end
23
+
20
24
  def operator
21
25
  options[:operator] || default_operator
22
26
  end
@@ -24,7 +28,7 @@ module ActiveModel
24
28
  # Defaults to the standard mathematical name for these operators, but you're free to override with
25
29
  # something that makes more sense ('later than' might make more sense for dates, for example)
26
30
  def operator_text
27
- options[:operator_text] ||
31
+ options[:operator_text] ||
28
32
  {
29
33
  :< => 'less than',
30
34
  :<= => 'less than or equal to',
@@ -49,9 +53,19 @@ module ActiveModel
49
53
  !!options[:attr]
50
54
  end
51
55
 
56
+ def human_attr_name
57
+ return unless options[:attr]
58
+ if defined?(ActiveRecord::Base)
59
+ ActiveRecord::Base.human_attribute_name(options[:attr])
60
+ else
61
+ options[:attr]
62
+ end
63
+ end
64
+
52
65
  def message_key
53
66
  comparing_to_attr? ? :less_or_greater_than_attr : :less_or_greater_than
54
67
  end
68
+
55
69
  public
56
70
 
57
71
  def validate_each(record, attribute, value)
@@ -63,7 +77,7 @@ module ActiveModel
63
77
  value: value,
64
78
  operator: operator,
65
79
  operator_text: operator_text,
66
- attr_name: options[:attr],
80
+ attr_name: human_attr_name,
67
81
  other_value: other_value,
68
82
  )
69
83
  )
@@ -1,5 +1,5 @@
1
1
  module Activemodel
2
2
  module Validators
3
- Version = "1.1.0"
3
+ Version = "1.2.0"
4
4
  end
5
5
  end
@@ -10,4 +10,7 @@ describe Response do
10
10
 
11
11
  it { should_not allow_value(0).for(:how_many_pies). with_message('must be at least 1') }
12
12
  it { should allow_value(1).for(:how_many_pies) }
13
+
14
+ it { subject.how_many_people = 5
15
+ should_not allow_value(0).for(:how_many_gifts). with_message('must be equal to How many people (5)') }
13
16
  end
@@ -1,8 +1,9 @@
1
- class Response < Struct.new(:how_many_people, :how_many_pies)
1
+ class Response < Struct.new(:how_many_people, :how_many_gifts, :how_many_pies)
2
2
  #extend ActiveModel::Naming
3
3
  #include ActiveModel::Conversion
4
4
  include ActiveModel::Validations
5
5
 
6
6
  validates :how_many_people, greater_than: { value: 1, operator: :>= }, allow_blank: true
7
+ validates :how_many_gifts, equal_to: {attr: :how_many_people}, allow_blank: true
7
8
  validates :how_many_pies, at_least: { value: 1 }, allow_blank: true
8
9
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemodel-validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Rick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-23 00:00:00.000000000 Z
11
+ date: 2014-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sqlite3
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: 'Some reusable ActiveModel validations, including greater_than, boolean_presence,
@@ -60,8 +60,8 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
- - .gitignore
64
- - .rspec
63
+ - ".gitignore"
64
+ - ".rspec"
65
65
  - Gemfile
66
66
  - Rakefile
67
67
  - Readme.md
@@ -75,6 +75,7 @@ files:
75
75
  - lib/activemodel-validators/blank_validator.rb
76
76
  - lib/activemodel-validators/boolean_presence_validator.rb
77
77
  - lib/activemodel-validators/date_validator.rb
78
+ - lib/activemodel-validators/equal_to_validator.rb
78
79
  - lib/activemodel-validators/greater_than_validator.rb
79
80
  - lib/activemodel-validators/less_or_greater_than_validator.rb
80
81
  - lib/activemodel-validators/less_than_validator.rb
@@ -103,17 +104,17 @@ require_paths:
103
104
  - lib
104
105
  required_ruby_version: !ruby/object:Gem::Requirement
105
106
  requirements:
106
- - - '>='
107
+ - - ">="
107
108
  - !ruby/object:Gem::Version
108
109
  version: '0'
109
110
  required_rubygems_version: !ruby/object:Gem::Requirement
110
111
  requirements:
111
- - - '>='
112
+ - - ">="
112
113
  - !ruby/object:Gem::Version
113
114
  version: '0'
114
115
  requirements: []
115
116
  rubyforge_project: activemodel-validators
116
- rubygems_version: 2.1.5
117
+ rubygems_version: 2.2.2
117
118
  signing_key:
118
119
  specification_version: 4
119
120
  summary: Some reusable ActiveModel validations