diff --git a/lib/noosfero/api/helpers.rb b/lib/noosfero/api/helpers.rb index 00d699b..36507ae 100644 --- a/lib/noosfero/api/helpers.rb +++ b/lib/noosfero/api/helpers.rb @@ -143,9 +143,6 @@ require 'grape' else articles = articles.published end - if params[:categories_ids] - articles = articles.joins(:categories).where('category_id in (?)', params[:categories_ids]) - end articles end @@ -248,6 +245,15 @@ require 'grape' end end + def by_categories(scope, params) + category_ids = params[:category_ids] + if category_ids.nil? + scope + else + scope.joins(:categories).where(:categories => {:id => category_ids}) + end + end + def select_filtered_collection_of(object, method, params) conditions = make_conditions_with_parameter(params) order = make_order_with_parameters(object,method,params) @@ -257,6 +263,7 @@ require 'grape' objects = object.send(method) objects = by_reference(objects, params) + objects = by_categories(objects, params) objects = objects.where(conditions).where(timestamp).page(page_number).per_page(per_page).reorder(order) diff --git a/test/unit/api/articles_test.rb b/test/unit/api/articles_test.rb index 7027769..547e276 100644 --- a/test/unit/api/articles_test.rb +++ b/test/unit/api/articles_test.rb @@ -546,7 +546,7 @@ class ArticlesTest < ActiveSupport::TestCase e2.categories << c2 e1.save! e2.save! - params['categories_ids[]']=c1.id + params['category_ids[]']=c1.id params['content_type']='Event' get "api/v1/communities/#{co.id}/articles?#{params.to_query}" json = JSON.parse(last_response.body) -- libgit2 0.21.2