Has many through : dynamic join on creation

Hello,

I have a User ActiveRecord model and a Group AR model joined by has_many :through Membership. It's not a HBTM because I need an extra attribute for the memberships.

I tried to fill my dev site with some data added via a migration file. I want to create two groups, and add a user to them. Below is the code I use, and a description of the behaviour I don't understand.

Code : - fold - unfold

   1. user = User.find_by_email('bob@example.org')    2.    3. group = Group.new    4. group.title = "First group"    5. group.save(false)    6.    7. membership = Membership.new    8. membership.group = group    9. membership.user = user   10. membership.credit = 10   11. membership.save(false)   12.   13. puts "membership 1"   14. user.groups.each do |g| puts g.title end   15.   16. # No problem here, output is :   17. # membership 1   18. # First group   19.   20. group2 = Group.new   21. group2.title = "Second group"   22. group2.save(false)   23.   24. membership2 = Membership.new   25. membership2.group = group2   26. membership2.user = user   27. membership2.credit = 15   28. membership2.save(false)   29.   30. puts "membership 2"   31. user.lists.each do |g| puts g.title end   32.   33. # Output is only :   34. # membership 2   35. # First group   36.   37. user2 = User.find_by_email('bob@example.org')   38.   39. puts "memberships"   40. user2.groups.each do |g| puts g.title end   41.   42. # Output is :   43. # memberships   44. # First group   45. # Second group

Why was my first group dynamically added to the user's groups, and not the second one ?

Thank you for your attention