Counter_caching clobbered when preloading association?


I’m trying to use counter caching in a tree structure (in this case Bob
Silva’s threaded list). This is the definition:

class Folder < ActiveRecord::Base
has_many :files

I would like each parent to have the total count of all the childrens
member. So when inserting a new file I update the file_count following
the parent_id through all the folders until I reach root. (Looking into
the db I see the correct values so this seems to work).

But I hit a problem when trying to read the file_count value from the

the code:
@folders = Folder.find(:all, :order => ‘root_id desc, lft’)
will return the file_count value as set in the database

the code:
@folders = Folder.find(:all, :include => :files, :order => ‘root_id
desc, lft’)
will return a file_count value of zero for all parents

So it seems that when I include the association to query folder and
files together the count gets recalculated. (my parents folders
currently only have other sub folders, but no files associated, so the
count on just that level is effectively zero.)

Is this intended? How could I work around this (I really like to use
the :include instead of loading them all separately) ?


Are you Stefan who was in Kyoto? If so, could you give me an e-mail via
this site as I couldn’t send you e-mail via this site? And if you can
remember who I am, please write my name in the mail. I don’t want to
write much personal information of you and me, so I will wait for your
response. M

Yes I was in Kyoto but sorry don’t remember, know a few persons by your
name. Sent me a direct email to [email protected].

My sincere apologies to the group for abusing this mailing list for
personal purposes, wont do it again :wink: