module SoulmateRails::ModelAdditions
Public Instance Methods
remove_index_for(attribute)
click to toggle source
# File lib/soulmate_rails/model_additions.rb, line 41 def remove_index_for(attribute) loader = instance_variable_get("@#{self.class.name_for(attribute)}") || instance_variable_set("@#{self.class.name_for(attribute)}", Soulmate::Loader.new(self.class.name_for(attribute))) loader.remove('id' => "#{attribute}_#{self.id}") end
update_index_for(attribute, options={})
click to toggle source
# File lib/soulmate_rails/model_additions.rb, line 11 def update_index_for(attribute, options={}) loader = instance_variable_get("@#{self.class.name_for(attribute)}_loader") || instance_variable_set("@#{self.class.name_for(attribute)}_loader", Soulmate::Loader.new(self.class.name_for(attribute))) item = { 'id' => "#{attribute}_#{self.id}", 'term' => send(attribute).encode('UTF-8'), 'score' => ( respond_to?(options[:score]) ? send(options[:score]) : options[:score] ) } if options[:aliases] if options[:aliases].is_a?(Array) item.merge!({'aliases' => options[:aliases]}) elsif respond_to?(options[:aliases]) aliases = send(options[:aliases]) item.merge!({'aliases' => aliases}) if aliases && aliases.is_a?(Array) end end if options[:data] if options[:data].is_a?(Hash) item.merge!({'data' => options[:data]}) elsif respond_to?(options[:data]) item.merge!({'data' => send(options[:data])}) elsif options[:data].is_a?(String) item.merge!({'data' => options[:data]}) end end loader.add(item) end