Rails大师:我刚刚发现named_scope
感谢另一个SO用户.:)
我想得到一组行的计数 - 即a 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(*)
查询.我在查询的数据库中有大量的行.
有一个更好的方法吗?
您正在寻找的功能是内置的.
Foobar.count # SELECT count(*) AS count_all FROM "foobars" Foobar.named_scope.count # SELECT count(*) AS count_all FROM "foobars" WHERE ....
如果您script/server
以开发模式运行,您将在执行时看到查询.