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.
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-03-03 17: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 :)
E4681a514c48f1c6de50747be9d96d3f?d=identicon&s=25 Sébastien Dabet (fiddler)
on 2009-03-03 17:32
Pesho Petrov 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)
988320371d9a18f0d50375188e01d54a?d=identicon&s=25 Peter Vandenabeele (Guest)
on 2009-03-03 17:43
(Received via mailing list)
On Tue, Mar 3, 2009 at 5:19 PM, Pesho Petrov
<rails-mailing-list@andreas-s.net> 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 Development 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
F0cb673a145d7630718c4729297f60df?d=identicon&s=25 Pesho Petrov (pesho318i)
on 2009-03-03 17:53
Thank you, guys :-)
This topic is locked and can not be replied to.