Я хочу добавить сортировку для 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
Как изменить его, чтобы он работал правильно?