У нас есть две модели, которые принадлежат компании: счета клиентов и поставщиков.В настоящее время они имеют свои собственные индексные страницы;создание коллекции для разбивки на страницы / сортировки на этих страницах так же просто, как current_company.customer_invoices
.
class CustomerInvoice < ApplicationRecord
belongs_to :company
end
class VendorInvoice < ApplicationRecord
belongs_to :company
end
class Company < ApplicationRecord
has_many :customer_invoices, -> { order(due_date: :desc) }
has_many :vendor_invoices, -> { order(due_date: :desc) }
end
Теперь нам нужно создать общую страницу индекса, которая будет разбивать и сортировать счета обоих типов.STI кажется очевидным решением, но, поскольку они функционально ОЧЕНЬ отличаются, и имеют минимальное пересечение в своих столбцах схемы, это выглядит как неудачный вариант использования.Есть ли другой вариант, кроме загрузки всех записей и сортировки / разбивки на страницы в памяти?
class Company
def invoices
(customer_invoices + vendor_invoices)
end
end
class InvoicesController < ApplicationController
def index
@invoices = current_company
.invoices
.sort_by(&:due_date)
.page(params[:whaveter_page])
end
end
По мере роста количества счетов это будет иметь очень плохую производительность памяти :(.