diff --git a/README.md b/README.md index 986f197..d600f46 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ end ## Customizations -- Ransack options can be customized defining a `ransack_options` method in the controller, example: +- Ransack options can be set adding specific methods (`ransack_options` / `ransack_result_distinct`) to a resource controller, example: ```rb module Admin @@ -128,6 +128,12 @@ module Admin # raises an exception on unknown parameters { ignore_unknown_conditions: false } end + + # by default distinct is applied on the search results + def ransack_result_distinct + # disable distinct + false + end end end ``` diff --git a/lib/administrate_ransack/searchable.rb b/lib/administrate_ransack/searchable.rb index 17d89ef..2d6f375 100644 --- a/lib/administrate_ransack/searchable.rb +++ b/lib/administrate_ransack/searchable.rb @@ -6,8 +6,9 @@ module AdministrateRansack module Searchable def scoped_resource options = respond_to?(:ransack_options) ? ransack_options : {} + distinct = respond_to?(:ransack_result_distinct) ? ransack_result_distinct : true @ransack_results = super.ransack(params[:q], **options) - @ransack_results.result(distinct: true) + @ransack_results.result(distinct: distinct) end # ref => https://github.com/thoughtbot/administrate/blob/v0.18.0/app/helpers/administrate/application_helper.rb#L72-L78 diff --git a/spec/dummy/app/controllers/admin/posts_controller.rb b/spec/dummy/app/controllers/admin/posts_controller.rb index f092785..8302243 100644 --- a/spec/dummy/app/controllers/admin/posts_controller.rb +++ b/spec/dummy/app/controllers/admin/posts_controller.rb @@ -6,6 +6,10 @@ def ransack_options { ignore_unknown_conditions: false } end + def ransack_result_distinct + false + end + # Overwrite any of the RESTful controller actions to implement custom behavior # For example, you may want to send an email after a foo is updated. #