Rails-Gurus: Ich habe gerade named_scope
dank eines anderen SO-Benutzers entdeckt. :)Verwenden von named_scope zum Abrufen der Zeilenanzahl
Ich möchte die Anzahl einer Reihe von Zeilen erhalten - d. H. Eine SELECT COUNT(*)
. Darüber hinaus möchte ich weiterhin in dem Aufruf benannte Bereiche verketten können.
Ist das eine legitime (wenn auch seltsame) Verwendung des benannten Bereichs?
named_scope :count, :select => "COUNT(*) as count_all"
So dann kann ich (zum Beispiel) tun:
@foobar = Foobar.count.scope.scope.scope
Die Zählung über @foobar.first.count_all
zugegriffen wird.
(Edited Allans Kommentare zu adressieren)
Sie tun können:
@foobar = Foobar.scope.scope.scope.size
Dies würde aber dazu führen, ein Ergebnis Abfrage und nicht die schnellere SELECT COUNT(*)
Abfrage. Ich habe eine große Anzahl von Zeilen in der Datenbank, die ich abfrage.
Gibt es einen besseren Weg, dies zu tun?
Duh. Manchmal sind die Dinge in Schienen so einfach, dass ich das Offensichtliche vermisse. Vielen Dank! – unknownuser
Bitte korrigieren Sie mich, wenn ich arbeite, aber das scheint nicht zu funktionieren, wenn Ihr benannter Bereich ungefähr so aussieht: def self.with_full_name select ("Benutzer. *, CONCAT (Vorname, Nachname) AS full_name") Ende –