class CommentsController < ApplicationController
def users_comments
posts = Post.all
comments = posts.map(&:comments).flatten
@user_comments = comments.select do |comment|
comment.author.username == params[:username]
end
end
end
Antwort
Dies wird so viele Abfragen erzeugen. Dieses Problem wird n + 1 genannt (siehe hier: https://www.sitepoint.com/silver-bullet-n1-problem/).
Ich schlage vor, mit so etwas wie diesem Code:
@user_comments = Comment.where(author: { username: params[:username] })
Ich glaube, Sie nicht brauchen die Beiträge habe ich recht?
Dadurch wird ActiveRecord angewiesen, die entsprechenden Kommentar- und Autoreneinträge sofort nach der ersten Anforderung für alle Posts aus der Datenbank abzurufen, wodurch die Anzahl der Datenbankanforderungen auf nur drei reduziert wird.
Es ist nur eine normale allgemeine Frage, die jeder googlen kann, da es die kleinste Änderung am bestehenden Code erfordert und keine Annahmen bezüglich der umgekehrten Zuordnung von Kommentar zu Beitrag macht. Lesen Sie mehr Interessante Fakten über Ruby on Rails Development von hier
- 1. Was ist SELF JOIN und wann würdest du es verwenden?
- 2. Skalierbarkeit der Java EE-Anwendung. Wie würdest du es angehen?
- 3. Einfache Backbone-Suchseite - wie würdest du es tun?
- 4. Was ist ein echtes Beispiel für etwas, das du mit einem Hash darstellen würdest?
- 5. Parsing FxCop Logfile - wie würdest du es tun?
- 6. Wie würdest du das Javascript für modals vom HTML trennen?
- 7. Wie würdest du Mathe in Kommentaren beschreiben?
- 8. Wie beantwortet man die Interviewfrage: Was ist ein Singleton und wie würdest du eins benutzen?
- 9. Was sind Behauptungen? und warum würdest du sie benutzen?
- 10. Wie würdest du einem Nicht-Programmierer Schauspieler erklären?
- 11. Wie würdest du hier einen Timer für den Slider implementieren?
- 12. Wie würdest du ein Rollmittel in Funken schreiben?
- 13. Was ist das Problem mit dem folgenden Code?
- 14. Was ist mit "reparieren" Schwimmer gemeint?
- 15. Was ist das Problem mit asp.net Route
- 16. Was ist das Problem mit reduce()?
- 17. Was ist das Problem mit Vcard-Duplikaten?
- 18. Würdest du Terrakotta als ein reifes Produkt betrachten?
- 19. Was ist das Problem mit dieser Funktion
- 20. Was ist das Problem mit AttachDbFilename
- 21. Was ist das interessanteste Designmuster, das du je gesehen hast?
- 22. Das "Du machst es falsch !!"
- 23. Wann würdest du reduce() anstelle von sum() verwenden?
- 24. Wann würdest du KMP über BOYER-MOORE verwenden?
- 25. Wie würdest du etwas animieren, so dass es einer Kurve folgt?
- 26. Ist es Viewport Problem oder was?
- 27. Was ist das Problem in diesem Code?
- 28. Würdest du das jemals benutzen, oder hast du jemals über so etwas nachgedacht? (Custom Nav-Controller für iPhone)
- 29. Warum würdest du eine ganze Klasse versiegeln/endgültig machen?
- 30. Was ist das Problem mit diesem C++ Code?
Welchen Fehler bekommen Sie? Bitte erstellen Sie Ihre Fragen mit Fehler und Logs –
1. Sie sollten nicht verwenden .all, es wird alle Datensätze im Speicher, die die Antwortzeit erhöhen wird 2. Sie sollten eifrig laden verwenden. Lies darüber [hier] (http://guides.rubyonrails.org/active_record_querying.html) –