Если у меня две таблицы Книги, диски с соответствующими моделями.
Я хочу отобразить пользователю список книг и компакт-дисков. Я также хочу иметь возможность сортировать этот список по общим атрибутам (дата выпуска, жанр, цена и т. Д.). У меня также есть базовая фильтрация по общим атрибутам.
Список будет большим, поэтому я буду использовать нумерацию страниц в управлении нагрузкой.
items = []
items << CD.all(:limit => 20, :page => params[:page], :order => "genre ASC")
items << Book.all(:limit => 20, :page => params[:page], :order => "genre ASC")
re_sort(items,"genre ASC")
Сейчас я делаю два запроса, объединяю их и затем сортирую. Это очень неэффективно. Также это ломается, когда я использую пейджинг и фильтрацию. Если я на странице 2, как я узнаю, на какой странице каждой отдельной таблицы я на самом деле? Невозможно определить эту информацию, не получив все элементы из каждой таблицы.
Я имею в виду, что если я создаю новый Класс с именем items, который имеет отношение один к одному с Книгой или CD, и делаю что-то вроде
Item.all(:limit => 20, :page => params[:page], :include => [:books, :cds], :order => "genre ASC")
Однако это возвращает неоднозначную ошибку. Так может быть уточнено только как
Item.all(:limit => 20, :page => params[:page], :include => [:books, :cds], :order => "books.genre ASC")
И не чередует книги и компакт-диски так, как я хочу.
Любые предложения.