Rails大師:我剛剛發現named_scope
感謝另一個SO用戶。 :)使用named_scope獲取行數
我想獲得一組行的數量 - 即一個SELECT COUNT(*)
。另外,我想仍然可以在調用中鏈接命名範圍。
這是命名作用域的合法(雖然很奇怪)用法嗎?
named_scope :count, :select => "COUNT(*) as count_all"
於是我可以(例如)做:
@foobar = Foobar.count.scope.scope.scope
計數通過@foobar.first.count_all
訪問。
(編輯解決艾倫的評論)
你可以這樣做:
@foobar = Foobar.scope.scope.scope.size
但是,這會導致結果的查詢,而不是更快的SELECT COUNT(*)
查詢。我在查詢的數據庫中有大量的行。
有沒有更好的方法來做到這一點?
這是我最初嘗試過的。 問題在於它沒有利用SELECT COUNT(*)是一個相對較快的查詢的事實。它會做一個行查詢,並且慢得多。 – unknownuser 2009-01-04 17:07:32
啊!我明白你的意思了。 請原諒我的誤解。 – 2009-01-05 12:28:05