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
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
Alessandro A. wrote:
Nessuno che mi aiuta?
Ciao
Giustamente delete() tenta di eliminare il record relativamente alla
tabella a cui il receiver appartiene (
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
Comunque, fa riferimento a =>
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M001602
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 (
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
Comunque, fa riferimento a =>
http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html#M001602