model.rb
941 Bytes
module Searchkick
module Model
def searchkick(options = {})
@searchkick_options = options.dup
@searchkick_options[:conversions] = true if options[:conversions].nil?
class_eval do
extend Searchkick::Search
extend Searchkick::Reindex
include Tire::Model::Search
include Tire::Model::Callbacks
tire do
index_name options[:index_name] || [klass.model_name.plural, ENV["RACK_ENV"] || "development"].join("_")
end
def reindex
update_index
end
def search_data
as_json
end
def to_indexed_json
source = search_data
if self.class.instance_variable_get("@searchkick_options")[:conversions] and source[:conversions]
source[:conversions] = source[:conversions].map{|k, v| {query: k, count: v} }
end
source.to_json
end
end
end
end
end