From 28004418058f4f1e576a28aa68f992da7b6773d3 Mon Sep 17 00:00:00 2001 From: Luciano Prestes Cavalcanti Date: Wed, 11 Feb 2015 11:50:12 -0200 Subject: [PATCH] Refactor scope search_by_query in SoftwareInfo to includes use the constant SEARCHABLE_SOFTWARE_CLASSES --- lib/software_info.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/software_info.rb b/lib/software_info.rb index 53ffe13..6cb73c5 100644 --- a/lib/software_info.rb +++ b/lib/software_info.rb @@ -20,10 +20,25 @@ class SoftwareInfo < ActiveRecord::Base if query.empty? SoftwareInfo.all else - includes(:community, :programming_languages, :database_descriptions).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')") + searchable_software_objects = SoftwareInfo.transform_list_in_methods_list(SEARCHABLE_SOFTWARE_CLASSES) + includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')") end } + def self.transform_list_in_methods_list list + methods_list = [] + + list.each do |element| + if SoftwareInfo.instance_methods.include?(element.to_s.underscore.to_sym) + methods_list << element.to_s.underscore.to_sym + elsif SoftwareInfo.instance_methods.include?(element.to_s.underscore.pluralize.to_sym) + methods_list << element.to_s.underscore.pluralize.to_sym + end + end + + methods_list + end + def self.pg_search_plugin_fields SEARCHABLE_SOFTWARE_CLASSES.collect { |one_class| self.get_searchable_fields(one_class) -- libgit2 0.21.2