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 sizecount

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.