Предполагая, что вы хотите разбить на страницы комбинацию тегов и сообщений, вы, вероятно, захотите разбить на пары объединение двух наборов данных ассоциации:
@tag.posts_dataset.
union(@tag.external_posts_dataset).
order(:created_at.desc).
paginate(page, 10)
Однако, это имеет проблемы, если posts и external_posts не используют один и тот же класс модели. Если они используют отдельные классы моделей, вам, возможно, придется отслеживать смещения вручную для каждого. Как правило, для каждой страницы выберите следующие 10 записей для обеих ассоциаций (начиная с каждого смещения). Объедините 2 группы по 10 в массив, отсортируйте его по перевернутому полю созданного_ката и возьмите первые 10 результатов. Подсчитайте количество постов и внешних постов в этом массиве из 10 комбинированных / отсортированных записей и обновите смещения постов и внешних постов соответственно для использования на следующей странице.
Например, на странице 1 вы будете использовать смещение 0 для обоих. Если после объединения, сортировки и взятия первых 10 в массиве из 10 будет 7 постов и 3 внешних поста, на странице 2 смещение постов будет начинаться с 7, а смещение внешних постов - с 3.