diff --git a/app/controllers/concerns/api/v2/taxonomies_controller.rb b/app/controllers/concerns/api/v2/taxonomies_controller.rb index 1c82e20a9914..8499efeae4cf 100644 --- a/app/controllers/concerns/api/v2/taxonomies_controller.rb +++ b/app/controllers/concerns/api/v2/taxonomies_controller.rb @@ -35,13 +35,13 @@ module Api::V2::TaxonomiesController api :GET, '/:resource_id', N_('List all :resource_id') param_group :search_and_pagination, ::Api::V2::BaseController def index - if @nested_obj - @taxonomies = @nested_obj.send(taxonomies_plural).send(:completer_scope, :controller => taxonomies_plural).search_for(*search_options).paginate(paginate_options) - @total = @nested_obj.send(taxonomies_plural).send(:completer_scope, :controller => taxonomies_plural).count - else - @taxonomies = taxonomy_class.send("my_#{taxonomies_plural}").search_for(*search_options).paginate(paginate_options) - @total = taxonomy_class.send("my_#{taxonomies_plural}").count - end + taxonomy_scope = if @nested_obj + taxonomy_class.where(:id => @nested_obj.send("#{taxonomy_single}_ids")) + else + taxonomy_class + end + @taxonomies = taxonomy_scope.send("my_#{taxonomies_plural}").search_for(*search_options).paginate(paginate_options) + @total = taxonomy_scope.send("my_#{taxonomies_plural}").count instance_variable_set("@#{taxonomies_plural}", @taxonomies) @render_template ||= 'api/v2/taxonomies/index' diff --git a/app/models/concerns/nested_ancestry_common.rb b/app/models/concerns/nested_ancestry_common.rb index a281a179d596..80af61753e5f 100644 --- a/app/models/concerns/nested_ancestry_common.rb +++ b/app/models/concerns/nested_ancestry_common.rb @@ -13,9 +13,6 @@ module NestedAncestryCommon validate :title_and_lookup_key_length - scoped_search :on => :title, :complete_value => true, :default_order => true - scoped_search :on => :name, :complete_value => :true - # attribute used by *_names and *_name methods. default is :name attr_name :title optional_attr_accessible :parent, :parent_id diff --git a/app/models/concerns/nested_ancestry_common/search.rb b/app/models/concerns/nested_ancestry_common/search.rb new file mode 100644 index 000000000000..afa5d3cea797 --- /dev/null +++ b/app/models/concerns/nested_ancestry_common/search.rb @@ -0,0 +1,8 @@ +module NestedAncestryCommon::Search + extend ActiveSupport::Concern + + included do + scoped_search :on => :title, :complete_value => true, :default_order => true + scoped_search :on => :name, :complete_value => :true + end +end diff --git a/app/models/hostgroup.rb b/app/models/hostgroup.rb index 81fa894fb8c2..15462cce559c 100644 --- a/app/models/hostgroup.rb +++ b/app/models/hostgroup.rb @@ -6,6 +6,7 @@ class Hostgroup < ActiveRecord::Base include HostCommon include NestedAncestryCommon + include NestedAncestryCommon::Search validates :name, :presence => true, :uniqueness => {:scope => :ancestry, :case_sensitive => false} diff --git a/app/models/parameter.rb b/app/models/parameter.rb index 8815c2e78835..f4bc1cc17ca1 100644 --- a/app/models/parameter.rb +++ b/app/models/parameter.rb @@ -9,7 +9,12 @@ class Parameter < ActiveRecord::Base include Authorizable validates :name, :presence => true, :no_whitespace => true - scoped_search :on => :name, :complete_value => true + def self.inherited(child) + child.instance_eval do + scoped_search :on => :name, :complete_value => true + end + super + end default_scope -> { order("parameters.name") } diff --git a/app/models/taxonomy.rb b/app/models/taxonomy.rb index a253b7cfab92..3d05b25efba6 100644 --- a/app/models/taxonomy.rb +++ b/app/models/taxonomy.rb @@ -29,8 +29,14 @@ class Taxonomy < ActiveRecord::Base before_validation :sanitize_ignored_types after_create :assign_default_templates - scoped_search :on => :description, :complete_enabled => :false, :only_explicit => true - scoped_search :on => :id + def self.inherited(child) + child.instance_eval do + scoped_search :on => :description, :complete_enabled => :false, :only_explicit => true + scoped_search :on => :id + end + child.send(:include, NestedAncestryCommon::Search) + super + end delegate :import_missing_ids, :inherited_ids, :used_and_selected_or_inherited_ids, :selected_or_inherited_ids, :non_inherited_ids, :used_or_inherited_ids, :used_ids, :to => :tax_host