mongoid-siblings 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/mongoid/siblings.rb +36 -31
  2. metadata +10 -10
@@ -13,7 +13,7 @@ module Mongoid
13
13
  # @example Retrieve document's siblings
14
14
  # book.siblings
15
15
  #
16
- # @see {#siblings_and_self}
16
+ # @see #siblings_and_self
17
17
  def siblings(options = {})
18
18
  self.siblings_and_self(options).excludes(id: self.id)
19
19
  end
@@ -164,39 +164,44 @@ module Mongoid
164
164
  self.save!
165
165
  end
166
166
 
167
- protected
167
+ def intelligent_inverse(name, other = nil)
168
+ other ||= self.send(name)
168
169
 
169
- def siblings_through_relation(name, other = nil)
170
- other ||= self.send(name)
171
-
172
- relation_metadata = self.reflect_on_association(name)
173
- inverses = relation_metadata.inverses(other)
174
-
175
- return nil if inverses.nil? || inverses.empty?
176
-
177
- if inverses.length == 1
178
- inverse = inverses.first
179
- elsif relation_metadata.polymorphic?
180
- inverse = inverses.find { |inverse|
181
- inverse == self.send(relation_metadata.inverse_of_field)
182
- }
183
- else
184
- inverse = inverses.find { |inverse|
185
- other.send(inverse).include?(self)
186
- }
187
- end
188
-
189
- return nil if inverse.nil?
190
-
191
- other.send(inverse)
170
+ relation_metadata = self.reflect_on_association(name)
171
+ return nil if relation_metadata.nil?
172
+ inverses = relation_metadata.inverses(other)
173
+
174
+ return nil if inverses.nil? || inverses.empty?
175
+
176
+ if inverses.length == 1
177
+ inverses.first
178
+ elsif relation_metadata.polymorphic?
179
+ inverse_of = send(relation_metadata.inverse_of_field)
180
+ inverses.find { |inverse| inverse == inverse_of }
181
+ else
182
+ inverses.find { |inverse| other.send(inverse).include?(self) }
192
183
  end
184
+ end
193
185
 
194
- def base_document_class(doc = self)
195
- base_document_klass = doc.class
196
- while base_document_klass.superclass.include?(Mongoid::Document)
197
- base_document_klass = base_document_klass.superclass
198
- end
199
- base_document_klass
186
+ def intelligent_inverse_metadata(name, other = nil)
187
+ other ||= self.send(name)
188
+
189
+ other.reflect_on_association(self.intelligent_inverse(name, other))
190
+ end
191
+
192
+ def siblings_through_relation(name, other = nil)
193
+ inverse = self.intelligent_inverse(name, other)
194
+ return nil if inverse.nil?
195
+
196
+ other.send(inverse)
197
+ end
198
+
199
+ def base_document_class(doc = self)
200
+ base_document_klass = doc.class
201
+ while base_document_klass.superclass.include?(Mongoid::Document)
202
+ base_document_klass = base_document_klass.superclass
200
203
  end
204
+ base_document_klass
205
+ end
201
206
  end
202
207
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-siblings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.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-09-10 00:00:00.000000000 Z
12
+ date: 2013-08-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
- requirement: &70156856689160 !ruby/object:Gem::Requirement
16
+ requirement: &70307288030900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70156856689160
24
+ version_requirements: *70307288030900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70156856688440 !ruby/object:Gem::Requirement
27
+ requirement: &70307288030500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70156856688440
35
+ version_requirements: *70307288030500
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70156856687800 !ruby/object:Gem::Requirement
38
+ requirement: &70307288030040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70156856687800
46
+ version_requirements: *70307288030040
47
47
  description: mongoid-siblings adds methods to enable you to easily access your Mongoid
48
48
  document's siblings.
49
49
  email: douwe@selenight.nl
@@ -74,7 +74,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  segments:
76
76
  - 0
77
- hash: 3757393961114996951
77
+ hash: 1581517259103189055
78
78
  required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  none: false
80
80
  requirements:
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  version: '0'
84
84
  segments:
85
85
  - 0
86
- hash: 3757393961114996951
86
+ hash: 1581517259103189055
87
87
  requirements: []
88
88
  rubyforge_project:
89
89
  rubygems_version: 1.8.6