validates_nested_uniqueness 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ require 'active_model'
2
+
3
+ module ActiveModel
4
+ module Validations
5
+
6
+ class NestedUniquenessValidator < ActiveModel::EachValidator
7
+
8
+ def initialize(options)
9
+ super(options)
10
+ @klass = options[:class]
11
+ @association = options[:association]
12
+ end
13
+
14
+ def validate_each(record, attribute, value)
15
+ parent = nil
16
+ ObjectSpace.each_object(eval(@klass)) { |r| parent = r if r.try(@association).include?(record) }
17
+ if parent
18
+ count = parent.try(@association).to_a.count { |r| r[attribute] == record[attribute] }
19
+ if count > 1
20
+ record.errors.add(attribute, 'duplicate', :value => 'val')
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ module ValidatesNestedUniqueness
2
+ VERSION = "0.9.0"
3
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validates_nested_uniqueness
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kyle Stevens
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activemodel
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Validates uniqueness of has_many children
47
+ email:
48
+ - kstevens715@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/validates_nested_uniqueness/version.rb
54
+ - lib/validates_nested_uniqueness.rb
55
+ homepage: http://github.com/kstevens715/validates_nested_uniqueness
56
+ licenses: []
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 1.8.21
76
+ signing_key:
77
+ specification_version: 3
78
+ summary: Validates uniqueness of has_many children
79
+ test_files: []