From d5c40a6e4e8e17929c3e3ddbb3c048423e6490a0 Mon Sep 17 00:00:00 2001 From: tomo-k Date: Thu, 23 Mar 2017 14:48:04 +0900 Subject: [PATCH 1/2] support_custom_primaty_key --- lib/nazrin/active_record/data_accessor.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/nazrin/active_record/data_accessor.rb b/lib/nazrin/active_record/data_accessor.rb index 85c3534..6ea6615 100644 --- a/lib/nazrin/active_record/data_accessor.rb +++ b/lib/nazrin/active_record/data_accessor.rb @@ -29,12 +29,13 @@ def results(client) # load from activerecord def load_all(ids) + key = @model.class_eval { class_variable_get(:@@nazrin_doc_id) } records_table = {} @options.each do |k, v| @model = @model.send(k, v) end - @model.where(id: ids).each do |record| - records_table[record.id] = record + @model.where("#{key} in (?)", ids).each do |record| + records_table[record.send("#{key}")] = record end ids.map do |id| records_table.select { |k, _| k == id.to_i }[id.to_i] From 2394ea65d89c35c40989accd00ea77815b975eef Mon Sep 17 00:00:00 2001 From: tomo-k Date: Thu, 23 Mar 2017 14:48:59 +0900 Subject: [PATCH 2/2] support_custom_primary_key --- lib/nazrin/active_record/searchable.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/nazrin/active_record/searchable.rb b/lib/nazrin/active_record/searchable.rb index 82ad972..c127fba 100644 --- a/lib/nazrin/active_record/searchable.rb +++ b/lib/nazrin/active_record/searchable.rb @@ -40,10 +40,11 @@ def nazrin_search(options = {}) client end - def nazrin_searchable(&block) + def nazrin_searchable(key=:id, &block) class_variable_set( :@@nazrin_doc_client, Nazrin::DocumentClient.new) + class_variable_set(:@@nazrin_doc_id, key) class_variable_set(:@@nazrin_search_field_data, {}) block.call end @@ -79,7 +80,7 @@ def nazrin_eval_field_data(obj) def nazrin_add_document(obj) nazrin_doc_client.add_document( - obj.send(:id), nazrin_eval_field_data(obj)) + obj.send(class_variable_get(:@@nazrin_doc_id)), nazrin_eval_field_data(obj)) end def nazrin_update_document(obj) @@ -87,7 +88,7 @@ def nazrin_update_document(obj) end def nazrin_delete_document(obj) - nazrin_doc_client.delete_document(obj.send(:id)) + nazrin_doc_client.delete_document(obj.send(class_variable_get(:@@nazrin_doc_id))) end end end