foreign_key_validation 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmIyZjgxODI4YjY3ZjBiMWE5YzAxMWY1OTU2MjBjMmM2NDY4ZTVlNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NGE0M2NkZDBmZDM0ODU0NWVjNzA4NWQ3NWFiNWNiOTYxMDZkOGYxZg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTRiYzRkNzFhMTI3MzllZTdiOWMwZjIyOWM5NDcyYjMzNjg5Y2U5YTZjMTZi
|
10
|
+
MDk0NzZhYjM0ZjE0NDM3ZTA5OWMyNTIwNGU0YjRmM2EwZjZlNzEzZGJiNmY1
|
11
|
+
OTgxMTU1YzQ0NzU2YjlmZDQxOGQ2OGQ3MmE2ZGEyYTM0YzkwNTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmY1ZjI1MDVmMmVhM2U4Yjk3MTg0OTE5NTZjYzg5ZjhkNzg5NTIzYjIxNzFh
|
14
|
+
ZWI4M2JkY2E4YjM3MTVjMTI1Y2IzZjFjNDY3ODQxODlkMWNlZTEyYzIzYTcy
|
15
|
+
ZmYwYzhkNGQ4M2M2Y2YyODg3ZDNlZThjYzRjNDhiMTgxMzY2ODM=
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "rails", "~> 4.0
|
21
|
+
spec.add_development_dependency "rails", "~> 4.0"
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.1"
|
24
24
|
spec.add_development_dependency "rspec-rails", "~> 3.0"
|
@@ -8,7 +8,7 @@ module ForeignKeyValidation
|
|
8
8
|
return if send(reflection_name).try(validate_against_key).nil? or try(validate_against_key).nil?
|
9
9
|
|
10
10
|
if send(reflection_name).send(validate_against_key) != send(validate_against_key)
|
11
|
-
errors.add(validate_against_key, "#{validate_against_key} of #{reflection_name} does not match #{self.class.name.tableize} #{validate_against_key}")
|
11
|
+
errors.add(validate_against_key, "#{validate_against_key} of #{reflection_name} does not match #{self.class.name.tableize} #{validate_against_key}.")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -18,12 +18,13 @@ module ForeignKeyValidation
|
|
18
18
|
subclasses.map {|klass| klass.send(:validate_foreign_keys, opt) } if subclasses.any?
|
19
19
|
|
20
20
|
validate_against = (opt[:on] || :user).to_s
|
21
|
-
|
22
|
-
reflection_names =
|
21
|
+
reflections = reflect_on_all_associations(:belongs_to)
|
22
|
+
reflection_names = reflections.map(&:name).map(&:to_s)
|
23
|
+
validate_against_key = reflections.select {|r| r.name.to_s == validate_against}.first.try(:foreign_key)
|
23
24
|
validate_with = ((Array(opt[:with]).map(&:to_s) if opt[:with]) || reflection_names).reject {|n| n == validate_against}
|
24
25
|
|
25
|
-
raise ArgumentError, "Can't find any belongs_to relations for #{name} class. Put validation call below association definitions" if reflection_names.empty?
|
26
|
-
raise ArgumentError, "No foreign key #{
|
26
|
+
raise ArgumentError, "Can't find any belongs_to relations for #{name} class. Put validation call below association definitions!" if reflection_names.empty?
|
27
|
+
raise ArgumentError, "No foreign key for relation #{validate_against} on #{table_name} table!" unless reflection_names.include?(validate_against)
|
27
28
|
raise ArgumentError, "Unknown relation in #{validate_with}!" unless validate_with.all? {|k| reflection_names.include?(k) }
|
28
29
|
|
29
30
|
define_method "validate_foreign_keys_on_#{validate_against}" do
|
data/spec/models/model_spec.rb
CHANGED
@@ -84,21 +84,21 @@ describe ForeignKeyValidation::ModelExtension do
|
|
84
84
|
it "does not allow to rewrite user id of idea" do
|
85
85
|
idea.user_id = 42
|
86
86
|
idea.save
|
87
|
-
expect(idea.errors.messages.values.flatten).to include("user_id of project does not match ideas user_id")
|
87
|
+
expect(idea.errors.messages.values.flatten).to include("user_id of project does not match ideas user_id.")
|
88
88
|
expect(idea.reload.user_id).to_not eq(42)
|
89
89
|
end
|
90
90
|
|
91
91
|
it "does not allow to rewrite user id of issue" do
|
92
92
|
issue.user_id = 42
|
93
93
|
issue.save
|
94
|
-
expect(issue.errors.messages.values.flatten).to include("user_id of project does not match issues user_id")
|
94
|
+
expect(issue.errors.messages.values.flatten).to include("user_id of project does not match issues user_id.")
|
95
95
|
expect(issue.reload.user_id).to_not eq(42)
|
96
96
|
end
|
97
97
|
|
98
98
|
it "does not allow to rewrite user id of comment" do
|
99
99
|
comment.user_id = 42
|
100
100
|
comment.save
|
101
|
-
expect(comment.errors.messages.values.flatten).to include("user_id of issue does not match comments user_id")
|
101
|
+
expect(comment.errors.messages.values.flatten).to include("user_id of issue does not match comments user_id.")
|
102
102
|
expect(comment.reload.user_id).to_not eq(42)
|
103
103
|
end
|
104
104
|
|
@@ -112,7 +112,7 @@ describe ForeignKeyValidation::ModelExtension do
|
|
112
112
|
it "does not allow to rewrite user id of developer" do
|
113
113
|
developer.user_id = 42
|
114
114
|
developer.save
|
115
|
-
expect(developer.errors.messages.values.flatten).to include("user_id of boss does not match developers user_id")
|
115
|
+
expect(developer.errors.messages.values.flatten).to include("user_id of boss does not match developers user_id.")
|
116
116
|
expect(developer.reload.user_id).to_not eq(42)
|
117
117
|
end
|
118
118
|
|
@@ -147,7 +147,7 @@ describe ForeignKeyValidation::ModelExtension do
|
|
147
147
|
it "does not allow to rewrite user id of idea" do
|
148
148
|
idea.user_id = 42
|
149
149
|
idea.save
|
150
|
-
expect(idea.errors.messages.values.flatten).to include("user_id of project does not match ideas user_id")
|
150
|
+
expect(idea.errors.messages.values.flatten).to include("user_id of project does not match ideas user_id.")
|
151
151
|
expect(idea.reload.user_id).to_not eq(42)
|
152
152
|
end
|
153
153
|
|
@@ -177,7 +177,7 @@ describe ForeignKeyValidation::ModelExtension do
|
|
177
177
|
context "with calling validation and wrong attributes hash" do
|
178
178
|
|
179
179
|
it "raises error due to wrong :on key" do
|
180
|
-
expect{Idea.class_eval { validate_foreign_keys on: :not_existing }}.to raise_error("No foreign key
|
180
|
+
expect{Idea.class_eval { validate_foreign_keys on: :not_existing }}.to raise_error("No foreign key for relation not_existing on ideas table!")
|
181
181
|
end
|
182
182
|
|
183
183
|
it "raises error due to wrong :with key" do
|
@@ -189,7 +189,7 @@ describe ForeignKeyValidation::ModelExtension do
|
|
189
189
|
context "with calling validation and missing relations" do
|
190
190
|
|
191
191
|
it "raises error due to wrong :on key" do
|
192
|
-
expect{Dummy.class_eval { validate_foreign_keys }}.to raise_error("Can't find any belongs_to relations for Dummy class. Put validation call below association definitions")
|
192
|
+
expect{Dummy.class_eval { validate_foreign_keys }}.to raise_error("Can't find any belongs_to relations for Dummy class. Put validation call below association definitions!")
|
193
193
|
end
|
194
194
|
|
195
195
|
end
|
@@ -210,7 +210,7 @@ describe ForeignKeyValidation::ModelExtension do
|
|
210
210
|
it "does not allow to rewrite user id of issue" do
|
211
211
|
issue.user_id = 42
|
212
212
|
issue.save
|
213
|
-
expect(issue.errors.messages.values.flatten).to include("user_id of project does not match issues user_id")
|
213
|
+
expect(issue.errors.messages.values.flatten).to include("user_id of project does not match issues user_id.")
|
214
214
|
expect(issue.reload.user_id).to_not eq(42)
|
215
215
|
end
|
216
216
|
|
data/spec/support/load_models.rb
CHANGED
data/spec/support/schema.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreign_key_validation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcus Geißler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.0
|
19
|
+
version: '4.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.0
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|