Commit 6522ba3b35589abc09bf4b36a5f5bb5c335e7d40

Authored by Andrew Kane
1 parent 96733e00

Treat _id and id differently - closes #203

CHANGELOG.md
1 1 ## 0.7.6 [unreleased]
2 2  
  3 +- Treat `id` and `_id` differently
3 4 - Added `padding` option
4 5  
5 6 ## 0.7.5
... ...
lib/searchkick/index.rb
... ... @@ -83,7 +83,8 @@ module Searchkick
83 83 source = record.search_data
84 84  
85 85 # stringify fields
86   - source = source.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}.except("id", "_id")
  86 + source = source.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}.except("_id")
  87 + source["id"] ||= search_id(record)
87 88  
88 89 options = record.class.searchkick_options
89 90  
... ...
lib/searchkick/query.rb
... ... @@ -195,8 +195,7 @@ module Searchkick
195 195  
196 196 # order
197 197 if options[:order]
198   - order = options[:order].is_a?(Enumerable) ? options[:order] : {options[:order] => :asc}
199   - payload[:sort] = Hash[ order.map{|k, v| [k.to_s == "id" ? :_id : k, v] } ]
  198 + payload[:sort] = options[:order].is_a?(Enumerable) ? options[:order] : {options[:order] => :asc}
200 199 end
201 200  
202 201 # filters
... ... @@ -383,8 +382,6 @@ module Searchkick
383 382 def where_filters(where)
384 383 filters = []
385 384 (where || {}).each do |field, value|
386   - field = :_id if field.to_s == "id"
387   -
388 385 if field == :or
389 386 value.each do |or_clause|
390 387 filters << {or: or_clause.map{|or_statement| {and: where_filters(or_statement)} }}
... ...
lib/searchkick/results.rb
... ... @@ -39,7 +39,7 @@ module Searchkick
39 39 else
40 40 hits.map do |hit|
41 41 result = hit.except("_source").merge(hit["_source"])
42   - result["id"] = result["_id"]
  42 + result["id"] ||= result["_id"] # needed for legacy reasons
43 43 Hashie::Mash.new(result)
44 44 end
45 45 end
... ...