Jak połączyć dwa Ransacki i potraktować Kaminari?

Jak w tytule, mam dwie zmienne query i query2. W każdej z nich mam pobrane z tej samej tabeli pewne dane (niestety, nie da się połączyć w jedno zapytanie :frowning: ). I chcę to teraz paginować.

Wygląda to póki co tak:

mails = query.result.page(params[:page]) mails += query.result.page(params[:page])
Niestety, wyniki się wysypują, bo mails jest teraz Array a Kaminari tego nie lubi.

Teraz pytanie - jak inaczej mogę połączyć te dwie zmienne z ransackiem, aby przepuścić przez Kaminari?
Tak, aby Kaminari wyświetlił mi tylko jeden “pasek” z kolejnymi stronami?

Jeżeli na prawdę się nie da, to Kaminari.paginate_array

Jesteś pewien? :> Napisz jak wyglądają te tabele i co wyciągasz - może jednak da się coś z tym zrobić?

Kombinowałem jak mogłem.

Tabela mails zawiera wiadomości. Są pola user_id (zawierająca odbiorcy) oraz sender_id (zawierająca nadawcę). No i jest naturalnie title, text i inne cuda, jak data, czy wiadomość przeczytana czy nie.

Zapytanie pobiera grupując po polu thread, które zawiera interger z numerem wątku. Pobiera tytuły wątku (FIRST z PostgreSQL).

Problem z zapytaniem jest taki, że musi pobrać i te gdzie występuje gracz jako user_id i jako sender_id. Musiałem więc przygotować dwa zapytania, bo jeśli pobierze pierwszy rekord z user_id jako graczem, który zaczął rozmowę - to wtedy w polu name użytkownika wyświetli się ten, kto zaczął rozmowę. A nie adresat. Tak samo w drugą stronę.

W każdym bądź razie, zapytanie wygląda tak:

where('user_id = ? AND (removed = false OR removed_by_sender = fals    e)', id).select('thread, FIRST(mails.id) as id, FIRST(title) as title, FIRST    (sender_id) AS sender_id, FIRST(mails.created_at) AS created_at, bool_and(re    ad) AS read, FIRST(users.name) AS name, FIRST(users.slug) AS slug').group('t    hread').joins('JOIN users ON users.id = mails.sender_id').order('created_at' )

Drugie jest identyczne, ale w where zamiast user_id jest sender_id.

Więc, sarniak, masz jakiś pomysł?