2017-08-16 4 views
0

Ich erstelle einen Aktivitätsfeed, der zeigt, was Ihre Freunde vorhaben. Ich bin in der Lage Freunde Datum mit der folgenden Abfrage Paginieren:Paginierung für Aktivitätsfeed, um neue Kriterien zu verwenden, wenn keine Ergebnisse vorhanden sind

friend_ids = current_profile.friend_ids 
@activities = Activity.where(profile_id: [friend_ids]).order('created_at desc').page(params[:page]) 

Ich mag würde hinzufügen Logik für, wenn es nicht mehr Inhalt von deinen Freunden dann zweite Grad Verbindungsdaten zu verwenden und dann alle öffentlichen Aktivitäten nutzen . Gibt es einen einfachen Weg, das zu tun?

Der Ansatz, den ich denke, ist eine Variable hinzuzufügen, die die aktuelle Seite sagt, wenn auf friends oder friends_of_friends oder everyone beziehen, so wird die Abfrage mit dem richtigen friend_ids aktualisiert und früheren Freund Ids ausschließen.

Gibt es eine einfachere Lösung? Oder Code, auf den Sie mich hinweisen könnten, der das Problem des Ausströmens von Feed-Ergebnissen löst, wenn bei der Paginierung keine Ergebnisse gefunden werden?

Antwort

1

Kaminari's Standard-Datensätze per_page ist 25, also können Sie das verwenden, um herauszufinden, was die letzte Seitenzahl sein wird, und diese Bedingung verwenden, um andere Daten einzuziehen.

Eine andere Möglichkeit könnte sein, sicherzustellen, dass die Länge @activities 25 ist (oder wie viele Datensätze Sie pro Seite haben). Wenn es weniger ist, wissen Sie, dass Sie das Ende Ihrer Daten erreicht haben und Sie entsprechend handeln können.

Verwandte Themen