Foo*_*Foo 2 ruby-on-rails ruby-on-rails-3
假设有2个模型叫做User和Post
哪个会更好(快)"A计划"还是"B计划"?
"计划A"
调节器
@users = User.find_all_by_country(params[:country])
@posts = Post.find_all_by_category(params[:category])
Run Code Online (Sandbox Code Playgroud)
视图
<%= @users.count.to_s %>
<%= @posts.count.to_s %>
Run Code Online (Sandbox Code Playgroud)
"B计划"
调节器
@users = User.find_all_by_country(params[:country])
@posts = Post.find_all_by_category(params[:category])
Run Code Online (Sandbox Code Playgroud)
视图
<%= @users.length.to_s %>
<%= @posts.length.to_s %>
Run Code Online (Sandbox Code Playgroud)
Ash*_*aka 14
在Ruby中,count,length和size所有做很多关于阵列同样的事情.有关详细信息,请参见此处
但是,使用ActiveRecord对象时,count优于length,size甚至更好.
find_all_by_country返回一个哑数组,所以你不应该使用该方法(因为它总是返回一个数组).相反,使用where(country: params[:country]).
我会让Code School的Rails最佳实践幻灯片93号为自己说话(希望他们不要因为我在这里复制它而生气).

为了防止图像被删除,基本上:
length 总是拉出所有记录,然后在阵列上调用.length - 糟糕
count 总是做一个计数查询 - 好
size 如果你有一个缓存计数器,则查看缓存,否则进行计数查询 - 最好