# Nuovo su ruby - problema con destroy has\_and\_belong\_to\_many

**URL:** <https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465>\
**Category:** IT\
**Created:** [January 11, 2009, 10:10pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465 "2009-01-11T22:10:25Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 11, 2009, 10:10pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465/1 "2009-01-11T22:10:25Z")

</div>

Ciao, prima volta che scrivo, e sto un po’ studiando questo linguaggio,  
quindi scusate in anticipo se la domanda fosse banale (ma non sono  
riuscito a trovare risposta)  
Il problema Ã¨ questo, io ho 2 modelli che sono legati fra di loro da una  
relazione many-to-many, e ho utilizzato la relazione  
has\_and\_belong\_to\_many,  
ho seguito tutto da manuale:

class Picture \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :users  
end

class User \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :pictures  
end

tabella di relazione

def self.up  
create\_table :pictures\_users, :id =\> false, :primary\_key  
=\>{‘user\_id’, ‘picture\_id’} do |t|  
t.integer :picture\_id  
t.integer :user\_id  
end  
end

funziona benissimo eccetto che se provo a eliminare un record di un  
modello va in errore.

def remove\_picture  
@pictures = params[:selected\_id]  
@pictures.each do |p|  
@p = Picture.find§  
@p.destroy  
end

L’errore che ricevo Ã¨ legato a una foreing\_key che ho messo su db, il  
che vuol dire che

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 11, 2009, 10:12pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465/2 "2009-01-11T22:12:15Z")

</div>

Alessandro A. wrote:

> Ciao, prima volta che scrivo, e sto un po’ studiando questo linguaggio,  
> quindi scusate in anticipo se la domanda fosse banale (ma non sono  
> riuscito a trovare risposta)  
> Il problema Ã¨ questo, io ho 2 modelli che sono legati fra di loro da una  
> relazione many-to-many, e ho utilizzato la relazione  
> has\_and\_belong\_to\_many,  
> ho seguito tutto da manuale:
> 
> class Picture \< ActiveRecord::Base  
> has\_and\_belongs\_to\_many :users  
> end
> 
> class User \< ActiveRecord::Base  
> has\_and\_belongs\_to\_many :pictures  
> end
> 
> tabella di relazione
> 
> def self.up  
> create\_table :pictures\_users, :id =\> false, :primary\_key  
> =\>{‘user\_id’, ‘picture\_id’} do |t|  
> t.integer :picture\_id  
> t.integer :user\_id  
> end  
> end
> 
> funziona benissimo eccetto che se provo a eliminare un record di un  
> modello va in errore.
> 
> def remove\_picture  
> @pictures = params[:selected\_id]  
> @pictures.each do |p|  
> @p = Picture.find§  
> @p.destroy  
> end
> 
> L’errore che ricevo Ã¨ legato a una foreing\_key che ho messo su db, il  
> che vuol dire che

partito lÃ¬invio per sbaglio…  
dicevo l’errore Ã¨ legato al fatto che con la destroy non rimuove il  
record nella tabella di relazione.

Come posso fare?

Grazie, ciao  
Alessandro

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 14, 2009, 1:00pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465/3 "2009-01-14T13:00:17Z")

</div>

Alessandro A. wrote:

> Nessuno che mi aiuta?
> 
> Ciao

Giustamente delete() tenta di eliminare il record relativamente alla  
tabella a cui il receiver appartiene (  
[ActiveRecord::Base](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002031) ).

Sostanzialmente devi ottenere un’istanza della tabella associazione,  
cioÃ¨ un record di tale tabella, e chiamare delete su di esso.

Qui c’Ã¨ un esempio di come fare:  
[http://www.neyric.com/blog/how-to-delete-a-many-to-many-association-with-rails](http://www.neyric.com/blog/how-to-delete-a-many-to-many-association-with-rails)

Comunque, fa riferimento a =\>  
[http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M001602](http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M001602)

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 14, 2009, 9:00pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465/4 "2009-01-14T21:00:52Z")

</div>

Funziona!  
ho replicato l’esempio e va benissimo!

Sei un grande,  
Grazie  
Ciao!

Roberto C. wrote:

> Alessandro A. wrote:
> 
> > Nessuno che mi aiuta?
> > 
> > Ciao
> 
> Giustamente delete() tenta di eliminare il record relativamente alla  
> tabella a cui il receiver appartiene (  
> [ActiveRecord::Base](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002031) ).
> 
> Sostanzialmente devi ottenere un’istanza della tabella associazione,  
> cioÃ¨ un record di tale tabella, e chiamare delete su di esso.
> 
> Qui c’Ã¨ un esempio di come fare:  
> [http://www.neyric.com/blog/how-to-delete-a-many-to-many-association-with-rails](http://www.neyric.com/blog/how-to-delete-a-many-to-many-association-with-rails)
> 
> Comunque, fa riferimento a =\>  
> [Peak Obsession](http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M001602)

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 12, 2009, 6:38pm UTC](https://www.ruby-forum.com/t/nuovo-su-ruby-problema-con-destroy-has-and-belong-to-many/157465/5 "2009-01-12T18:38:31Z")

</div>

Nessuno che mi aiuta?

Ciao
