Forum: Ruby HABTM insertion deletes old entries

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cc6ae9862e93740637dbbea00b680616?d=identicon&s=25 Preethi Sivakumar (preethi)
on 2009-01-30 06:58
Hi,

I've 2 models Profile & User and they have HABTM relationship.

---------------------
class Vcprofile < ActiveRecord::Base
  has_and_belongs_to_many :users
end
----------------------
class Vcgbluser < ActiveRecord::Base
   has_and_belongs_to_many :vcprofiles
end
----------------------


I've a screen designed in which i can assign one profile to so many
users(through list box).

Initially if i assign 2 users(say sam and rose) to the profile(say
profile1), an entry is made into the "profiles_users" mapping table.
-----------------------------------------------------------
@profile.users = @User (@user is a list of users selected)
------------------------------------------------------------

But later when i open the same page and select two more users(say jack
and jil) for the same profile(profile1) and submit, the old two
entries(sam and rose) are delted from the mapping table(profiles_uses)
and these two entries are added.

Why does HABTM delete the old entries(sam and rose) when a new
assignment is made?

Can anyone help?

Thanks in advance.
3637c8ab02ad27d4548614027d1d26f3?d=identicon&s=25 Scott Lillibridge (Guest)
on 2009-01-30 14:08
(Received via mailing list)
In a HABTM relationship, assigning a new collection (using =) will
delete
the old collection and set it to the new collection. If you want to add
to a
collection, use the << operator.
Cc6ae9862e93740637dbbea00b680616?d=identicon&s=25 Preethi Sivakumar (preethi)
on 2009-01-30 14:24
Scott Lillibridge wrote:
> In a HABTM relationship, assigning a new collection (using =) will
> delete
> the old collection and set it to the new collection. If you want to add
> to a
> collection, use the << operator.

It is working now.
Thank you so much Scott :)
This topic is locked and can not be replied to.