Rails Size & Count
Mỗi khi exec query, Active Record sẽ tạo ra biến @loaded = true cho Relation đó.
@posts = Post.all
@posts.loaded? #=>true
Hàm size
và count
def size
loaded? ? @records.length : count(:all)
end
def count(column_name = nil, options = {})
# [...]
calculate(:count, column_name, options)
end
count
luôn luôn sinh ra query, còn size
sẽ check relation và query nếu cần.
Rõ ràng là cần cân nhắc dùng count
để tránh dư thừa query.