search_me 0.0.5 → 0.0.6

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 (3) hide show
  1. checksums.yaml +5 -13
  2. data/lib/search_me/search.rb +25 -5
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MDM2MTkwYjU4Y2Q3OTUyOWZjNmU3OTFjZmRmNTdiNDAwYzZiM2Q0Mg==
5
- data.tar.gz: !binary |-
6
- OGNjZGY4MzI0ZDNmYjJlNjljZWYzMjdmMTRhMzBmNjI2YWNiYzJjZA==
2
+ SHA1:
3
+ metadata.gz: 4dc0217a072a11faf8495a56272dff5b46303e1e
4
+ data.tar.gz: 57733d8dfd4cf36396172cc30292fbc31e30f930
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NDdkYTRkOTA5NTZlOTJkZTgyNzMyZWM3ZmIwNjhiN2JmNWYzNzA2MjYyMDFm
10
- NjgwZGQzZDM5MTljMDc1ZjVhNDlkMmFjZjk5YmM1YzUzNzYwMjI0OGUxODM3
11
- ZTE0NzA3MTZlNzg3NzRmNGU2OWRiNjg5YWI3OTM0MzExYzhjOGM=
12
- data.tar.gz: !binary |-
13
- Mzc1YTU0OTdiN2IwOWI0YzMzMDE1YzRlMWM4ZTc1MmZjYTMwZGE0MDA1Yjc1
14
- ODc0OWMwMWUzODIzNjAxOGYyN2ZiODFjNzEwYjNjNGQyY2VjZjQyOWJlZjU0
15
- N2U1MWU0MjQzMWZiN2NjYzY1OWFhNWJjZjZiZjA0NDY2ODdiYTg=
6
+ metadata.gz: a5a9ffa37a4f9d9fab544a86adc9f732a74be138aa2bc7558f9d25aa32d5b082f3ce2f0a532426188934a3ddd21a5201ea853ad291df0007361312976dee7c26
7
+ data.tar.gz: 71d3ba7dd7f2994344ee6f892b32d39d5e5c5fc8ac4f045e6b3c3a09725242fdfbd9fac24ef6d98cb4e5b225134c8453f2f53bf21223ee95bf3ea331ebffe48b
@@ -117,7 +117,16 @@ module SearchMe
117
117
  "id IN (#{object_ids(objs, f_key).join(',')})"
118
118
  }
119
119
  when :has_many_through
120
- warn 'WARNING: has_many_through relationships not available'
120
+ warn 'WARNING: has_many_through in development'
121
+ self.advanced_search_reflection_group(type,search_terms) {
122
+ |reflection,objs|
123
+
124
+ f_key = "#{name_for(reflection.name)}_id"
125
+ related = through_klass_for_reflection(reflection)
126
+ .where(f_key => objs.ids)
127
+
128
+ "id IN (#{object_ids(related).join(',')})"
129
+ }
121
130
  end
122
131
  }
123
132
  self.where(join(conditions))
@@ -147,7 +156,14 @@ module SearchMe
147
156
  "id IN (#{object_ids(objs, f_key).join(',')})"
148
157
  }
149
158
  when :has_many_through
150
- warn 'WARNING: has_many_through relationships not available'
159
+ warn 'WARNING: has_many_through in development'
160
+ self.search_reflection_group(type, term) { |reflection,objs|
161
+ f_key = "#{name_for(reflection.name)}_id"
162
+ related = through_klass_for_reflection(reflection)
163
+ .where(f_key => objs.ids)
164
+
165
+ "id IN (#{object_ids(related).join(',')})"
166
+ }
151
167
  end
152
168
  }
153
169
  join(condition)
@@ -245,6 +261,10 @@ module SearchMe
245
261
  (column ? objects.map(&column.to_sym) : objects.ids) << -5318008
246
262
  end
247
263
 
264
+ def through_klass_for_reflection(reflection)
265
+ constant_for(reflection.options[:through])
266
+ end
267
+
248
268
  def klass_for_reflection(reflection)
249
269
  if name = reflection.options[:class_name]
250
270
  constant_for(name)
@@ -254,9 +274,9 @@ module SearchMe
254
274
  end
255
275
 
256
276
  def name_for(constant, options = {})
257
- options.fetch(:plural) { false }
258
- name = constant.to_s.underscore
259
- name = name.singularize unless plural
277
+ plural = options.fetch(:plural) { false }
278
+ name = constant.to_s.underscore
279
+ name = name.singularize unless plural
260
280
  name
261
281
  end
262
282
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search_me
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
@@ -31,12 +31,12 @@ require_paths:
31
31
  - lib
32
32
  required_ruby_version: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - ! '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: '0'
37
37
  required_rubygems_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ! '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  requirements: []