bUg
(bUg.)
1
Hi. I have few models - user, task, file
class User < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :files
end
class File < ActiveRecord::Base
has_and_belongs_to_many :tasks
end
I want to know files count for some user. is there some 'right' way to
do it without getting all tasks and looping it?
P.S. there is really many tasks and files.
11155
(-- --)
3
sl_bug wrote in post #977638:
I want to know files count for some user. is there some 'right' way to
do it without getting all tasks and looping it?
P.S. there is really many tasks and files.
ActiveRecord includes aggregate calculations for this purpose that
perform the counts, sums, averages, etc. at the SQL layer:
http://railsapi.com/doc/rails-v3.0.3/classes/ActiveRecord/Calculations.html
bUg
(bUg.)
4
Yea, but how to use it with such associations?
bUg
(bUg.)
5
seems like i found how to do it for one user
File.where(:users => {:id => 1}).count(:all, :include => {:tasks
=> :user})
but how to get hash with 'user' -> 'files count' using one query,
or may be even use something like counter cache.