validates_belongs_to 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,3 +4,8 @@ gem 'rake'
4
4
 
5
5
  # Specify your gem's dependencies in validates_belongs_to.gemspec
6
6
  gemspec
7
+
8
+ group :development do
9
+ gem 'rspec'
10
+ gem 'shoulda-matchers'
11
+ end
data/README.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  This is a simple validator which validates an association belongs to the same owner.
4
4
 
5
+ ## Usage
6
+
7
+ Add to your Gemfile:
8
+
9
+ ```ruby
10
+ gem 'validates_belongs_to'
11
+ ```
12
+
13
+ Add the validator to your model:
14
+
15
+ ```ruby
16
+ class Car < ActiveRecord::Base
17
+ validates :warehouse, :belongs_to => :user
18
+ # or you can use validates_belongs_to :warehouse, :user
19
+ end
20
+ ```
21
+
5
22
  ## Example code
6
23
 
7
24
  ```ruby
@@ -1,5 +1,4 @@
1
1
  en:
2
- activerecord:
3
- errors:
4
- messages:
5
- belongs_to: "does not belong to %{value}"
2
+ errors:
3
+ messages:
4
+ belongs_to: "does not belong to %{value}"
@@ -1,3 +1,3 @@
1
1
  module ValidatesBelongsTo
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -16,8 +16,8 @@ module ValidatesBelongsTo
16
16
  class BelongsToValidator < ActiveModel::EachValidator
17
17
 
18
18
  def validate_each(record, attribute, owner)
19
- record_value = get_id_by_association(record)
20
- owner_value = get_id_by_association(owner)
19
+ record_value = get_id_by_association(record, options[:with])
20
+ owner_value = get_id_by_association(owner, options[:with])
21
21
 
22
22
  unless record_value == owner_value
23
23
  record.errors.add(attribute, :belongs_to, options.merge(:value => options[:with]))
@@ -26,13 +26,15 @@ module ValidatesBelongsTo
26
26
 
27
27
  protected
28
28
 
29
- def get_id_by_association(record)
30
- association = record.class.reflect_on_association(options[:with])
29
+ def get_id_by_association(record, association_name)
30
+ return nil if record.nil?
31
+
32
+ association = record.class.reflect_on_association(association_name)
31
33
 
32
34
  if association.try(:macro) == :belongs_to
33
35
  record.send(association.foreign_key)
34
36
  else
35
- association_resource = record.send(options[:with])
37
+ association_resource = record.send(association_name)
36
38
  association_resource.try(association_resource.class.primary_key)
37
39
  end
38
40
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
+ require 'active_record'
1
2
  require 'validates_belongs_to'
2
-
3
+ require 'shoulda/matchers'
3
4
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3",
4
5
  :database => File.dirname(__FILE__) + "/validates_belongs_to.sqlite3")
5
6
 
@@ -2,30 +2,18 @@ require 'spec_helper'
2
2
 
3
3
  describe ValidatesBelongsTo do
4
4
 
5
- context "valid" do
6
-
7
- let(:user) { User.create }
8
- let(:warehouse) { Warehouse.create({ :user => user }) }
9
-
10
- subject { Car.create({ :user => user, :warehouse => warehouse })}
11
-
12
- it { should be_valid }
13
-
14
- end
15
-
16
- context "invalid" do
5
+ context :validation do
17
6
 
18
7
  let(:user) { User.create }
19
8
  let(:user_2) { User.create }
20
- let(:warehouse) { Warehouse.create({ :user => user }) }
21
9
 
22
- subject { Car.create({ :user => user_2, :warehouse => warehouse })}
10
+ let(:warehouse) { Warehouse.create({ :user => user }) }
11
+ let(:warehouse_2) { Warehouse.create({ :user => user_2 }) }
23
12
 
24
- it { should_not be_valid }
13
+ subject { Car.new({ :user => user }) }
25
14
 
26
- it "should contain validation error" do
27
- subject.errors[:warehouse].should include 'does not belong to user'
28
- end
15
+ it { should allow_value(warehouse).for(:warehouse) }
16
+ it { should_not allow_value(warehouse_2).for(:warehouse).with_message('does not belong to user') }
29
17
 
30
18
  end
31
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_belongs_to
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-15 00:00:00.000000000Z
12
+ date: 2013-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70281984882240 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70281984882240
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &70281984881560 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '2.3'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70281984881560
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.3'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: sqlite3
38
- requirement: &70281984881100 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70281984881100
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: activerecord
49
- requirement: &70281984879600 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,7 +69,12 @@ dependencies:
54
69
  version: '3.0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70281984879600
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '3.0'
58
78
  description: Validates wether an association belongs to the same owner
59
79
  email:
60
80
  - mail@arjen.me
@@ -87,15 +107,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
107
  - - ! '>='
88
108
  - !ruby/object:Gem::Version
89
109
  version: '0'
110
+ segments:
111
+ - 0
112
+ hash: 2930070579441286280
90
113
  required_rubygems_version: !ruby/object:Gem::Requirement
91
114
  none: false
92
115
  requirements:
93
116
  - - ! '>='
94
117
  - !ruby/object:Gem::Version
95
118
  version: '0'
119
+ segments:
120
+ - 0
121
+ hash: 2930070579441286280
96
122
  requirements: []
97
123
  rubyforge_project: validates_belongs_to
98
- rubygems_version: 1.8.10
124
+ rubygems_version: 1.8.24
99
125
  signing_key:
100
126
  specification_version: 3
101
127
  summary: Validates wether an association belongs to the same owner