Forum: Ruby on Rails destroying entities related by foreign key

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.
Pesho P. (Guest)
on 2009-03-03 18:19
hi all,

I have a table "memberships". It has a field user_id, which I want to
use as a foreign key to the "users" table.

So, as far as I get it, in the membership model I have to write:
has_many :users

In the users model, I write:
belongs_to :membership

However(in case the above is correct), how do I ensure that if I delete
a user, the related entities in membership will be also deleted??

Thank you :)
Sébastien D. (Guest)
on 2009-03-03 18:32
Pesho P. wrote:
> hi all,
>
> I have a table "memberships". It has a field user_id, which I want to
> use as a foreign key to the "users" table.
>

In that case you should have :
    "has_many :memberships" in the User model class
and "belongs_to :user" in the Membership model class

If you want all related memberships destroyed when deleting a user, you
must write this in the User class:
 "has_many :memberships, :dependent=>:destroy"

(See
http://api.rubyonrails.org/classes/ActiveRecord/As...
for more info about :destroy option)
Peter V. (Guest)
on 2009-03-03 18:43
(Received via mailing list)
On Tue, Mar 3, 2009 at 5:19 PM, Pesho P.
<removed_email_address@domain.invalid> wrote:
> a user, the related entities in membership will be also deleted??
Check the options for "has_one" and "has_many" (e.g. on page 329 and
page 331 in the Second Edition of "Agile Web D. with Rails").

Use "destroy" on the parent object (not delete).

The option to the has_one or has_many you want is:

 :dependent => :destroy

or

 :dependent => :delete_all

depending on your design. The child row(s) will be destroyed at the time
the
parent is destroyed.

HTH,

Peter
Pesho P. (Guest)
on 2009-03-03 18:53
Thank you, guys :-)
This topic is locked and can not be replied to.