mongoid-siblings 0.1.1 → 0.1.2

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.
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