Fixed ransack admin search

This commit is contained in:
Sergei Tsoganov 2023-04-06 13:54:03 +03:00
parent ae384e4e64
commit aa8d8c35e8
9 changed files with 34 additions and 20 deletions

View file

@ -26,7 +26,7 @@ module Admin
respond_to do |format|
format.html { render page }
format.csv do
raw_csv = CsvGenerator.generate_csv(@q.result)
raw_csv = CsvGenerator.generate_csv(@q.result(distinct: true))
send_data raw_csv,
filename: "#{filename}_#{Time.zone.now.to_formatted_s(:number)}.csv",
type: "#{Mime[:csv]}; charset=utf-8"

View file

@ -5,27 +5,21 @@ module Admin
before_action :set_domain, only: %i[show edit update download keep]
authorize_resource
# rubocop:disable Metrics/MethodLength
def index
params[:q] ||= {}
domains = if params[:statuses_contains]
Domain.includes(:registrar, :registrant).where(
"domains.statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}"
)
else
Domain.includes(:registrar, :registrant)
end
domains = Domain.includes(:registrar, :registrant).joins(:registrar, :registrant)
p = params[:statuses_contains]
domains = domains.where('domains.statuses @> ?::varchar[]', "{#{p.join(',')}}") if p.present?
normalize_search_parameters do
@q = domains.ransack(PartialSearchFormatter.format(params[:q]))
@domains = @q.result.page(params[:page])
@domains = @q.result(distinct: true).page(params[:page])
end
@domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
render_by_format('admin/domains/index', 'domains')
end
# rubocop:enable Metrics/MethodLength
def show
# Validation is needed to warn users