Tattat
Tattat

Reputation: 15778

How to count the object number instead of getting all object in Ruby?

For Example, I want to know the User have how many post. So, I do it in this way;

user.posts.length

It works, but when I see the server log, it shows me that:

SELECT * FROM "posts" WHERE ("posts".user_id = 6) 

actually, I need to know the post number only, how can I do this? Thank you.

Upvotes: 1

Views: 97

Answers (3)

Slobodan Kovacevic
Slobodan Kovacevic

Reputation: 6898

You can use count/size method instead of length:

user.posts.count

It will execute query similar to:

SELECT COUNT(*) AS count_id FROM "posts" WHERE ("posts".user_id = 6) 

Upvotes: 0

Andrea Pavoni
Andrea Pavoni

Reputation: 5311

try this:

 user.posts.count

Upvotes: 1

Swanand
Swanand

Reputation: 12426

user.posts.count

# This will generate this:
SELECT count(*) AS count_all FROM `posts` WHERE (`posts`.user_id = 1) 

Upvotes: 3

Related Questions