Commit 28004418058f4f1e576a28aa68f992da7b6773d3

Authored by Luciano Prestes
Committed by Gabriela Navarro
1 parent d675b078

Refactor scope search_by_query in SoftwareInfo to includes use the constant SEAR…

…CHABLE_SOFTWARE_CLASSES

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
Showing 1 changed file with 16 additions and 1 deletions   Show diff stats
lib/software_info.rb
... ... @@ -20,10 +20,25 @@ class SoftwareInfo &lt; ActiveRecord::Base
20 20 if query.empty?
21 21 SoftwareInfo.all
22 22 else
23   - includes(:community, :programming_languages, :database_descriptions).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')")
  23 + searchable_software_objects = SoftwareInfo.transform_list_in_methods_list(SEARCHABLE_SOFTWARE_CLASSES)
  24 + includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')")
24 25 end
25 26 }
26 27  
  28 + def self.transform_list_in_methods_list list
  29 + methods_list = []
  30 +
  31 + list.each do |element|
  32 + if SoftwareInfo.instance_methods.include?(element.to_s.underscore.to_sym)
  33 + methods_list << element.to_s.underscore.to_sym
  34 + elsif SoftwareInfo.instance_methods.include?(element.to_s.underscore.pluralize.to_sym)
  35 + methods_list << element.to_s.underscore.pluralize.to_sym
  36 + end
  37 + end
  38 +
  39 + methods_list
  40 + end
  41 +
27 42 def self.pg_search_plugin_fields
28 43 SEARCHABLE_SOFTWARE_CLASSES.collect { |one_class|
29 44 self.get_searchable_fields(one_class)
... ...