11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# 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
|