Как настроить Ransack Rails Gem для добавления NULLS LAST для сортировки

Я хотел бы, чтобы Ransack всегда добавлял NULLS LAST который поместит нули в последнюю очередь для столбца сортировки.

Есть ли способ сделать это?

Я открыл вопрос GitHub по этому вопросу: https://github.com/activerecord-hackery/ransack/issues/443

1 ответ

Ответ находится в теме, связанной с вопросом выше. Написание здесь, так что его легче найти. По-видимому, вам нужно снова построить строку заказа и добавить Null Last к этому.

Это решило это для меня (работает на всех столбцах):

@q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")

Однако вы должны исключить его, когда у вас нет параметров сортировки, так что это мое окончательное решение:

@q = Project.ransack(params[:q])
@fields = current_user.settings.default_project_fields
if @q.sorts.present?
  @result = @q.result.except(:order).order("#{@q.sorts.first.name} #{@q.sorts.first.dir} NULLS LAST")
else
  @result = @q.result
end
Другие вопросы по тегам