Hi there,
I would like to find more information about query caching, or about the
concept behind the following behavior, in a "User has many Groups
through Memberships" association.
Let me show you an example.
# Base :
user = User.find_by_email('john.doe@example.org')
group = List.create( :title => "First group" )
group2 = List.create( :title => "Second group" )
# if I do this :
Membership.create(:group => group, :user => user)
Membership.create(:group => group2, :user => user)
user.groups.each do |g| puts g.title end
# the result is as expected
First group
Second group
# But if do this :
Membership.create(:group => group, :user => user)
user.groups.each do |g| puts g.title end
Membership.create(:group => group2, :user => user)
user.groups.each do |g| puts g.title end
# the result is :
First group
First group
# instead of
First group
First group
Second group
What's the magic behind that ?
Also, what's the best way to create new memberships and avoid troubles ?
Thanks
on 04.03.2008 12:28
on 04.03.2008 12:46
On 4 Mar 2008, at 11:28, aJo aJo wrote: > > > This isn't a query caching problem, it's activerecord's association caching (so if you were to add a user.reload or a user.groups.reload in there you would get the right answer) Fred
on 04.03.2008 13:03
OK, I indeed found that a .reload could do the trick. But I suppose we are not condemned to do a .reload before every call to an association, so how do you avoid that ?