Сортировка в Рельсах / Виноград - PullRequest
0 голосов
/ 15 октября 2019

Я хочу добавить сортировку для pdf_path в моей админ-панели в Rails с Grape. Я думал, что все, что я должен сделать, это добавить одну строку в хэш: sort, но оказывается, у меня ошибка:

ActiveRecord :: StatementInvalid (PG :: UndefinedColumn: ERROR: column pdf_pathне существует

Разве не должно быть, что приложение выполняет поиск и сортировку по хэшу ответов вместо базы данных? Этот столбец не существует, но я определил его в сериализаторе. Это та же самая ситуация, когдаУ меня нет поля bank_partner_name в дБ, но я определил его в сериализаторе, и сортировка работает хорошо

хэш в конечной точке:

optional :sort, type: Hash do
  optional :bank_partner_name, type: String, values: %w[asc desc]
  optional :pdf_path, type: String, values: %w[asc desc]

serializer

module V1
  module AdminPanel
    module Serializers
      class ProcessSerializer
        include FastJsonapi::ObjectSerializer
        extend V1::Helpers::DateTimeHelpers

        attributes :external_id, :processed

        attribute :bank_partner_name do |process|
          process.bank_partner&.name
        end

        attribute :pdf_path do |process|
          process.pdf&.path
        end
      end
    end
  end
end

get с сортировкой

get do
  collection = InquiryProcess
               .joins(:inquiry_template)
               .where.not(inquiry_process_summary_pdf: nil)
               .where(inquiry_templates: {
                        inquiry_process_name: InquiryTemplate::LOAN_APPLICATION_PROCESS_NAME,
                      })

  collection = collection.order(id: :asc) if params[:sort].blank?

  admin_serialize paginate(filter(sort(collection)))
end

Если кому-то интересно, метод admin_serialize ниже

def admin_serialize(*args, **kwargs)
  serialize(*args, kwargs.merge(namespace: 'AdminPanel'))
end

Как изменить его, чтобы он работал правильно?

...