2016-06-30 14 views
0

Ich habe zwei Modelle: Project mit has_one :performer und Performer mit belongs_to :projectWie löscht Beziehung belongs_to - has_one zwischen Objekten

Ich habe Objekt Projekt mit Beziehung mit Performer wie project.performer

Wie kann ich diese Beziehung löschen? Ich brauche das Attribut performer_id, um den Wert nil zu haben.

+0

Wie ist es möglich, dass Ihr Fremdschlüssel Null ist. ? Mit welchen Problemen sind Sie bei der Verwaltung von Beziehungen konfrontiert? Warum möchten Sie die Beziehung entfernen? Geben Sie mehr Details können helfen, Ihre Frage zu lösen –

Antwort

3

Sie aktualisieren nur Ihr Objekt Project.

class Project < ActiveRecord::Base 
    ... 
    def remove_performer 
    update(performer_id: nil) 
    end 
    ... 
end 

Add-Methode remove_performer, dann können Sie es verwenden Darsteller von Projekt zu entfernen.

proj = Project.new 
proj.remove_performer 
+0

großen großen Dankeschön – dev85

1

Wenn ich Sie richtig verstanden habe, können Sie einfach has_one und belongs_to aus Ihren Modellen entfernen.

UPDATE
performer_id-nil für bestimmtes Objekt setzen Sie

alle Validierungen Dies wird überspringen
project.update_column :project, nil 

tun können. Natürlich sollte Ihr Datenbankschema NULL Wert für projects.performer_id zulassen.

Hinweis: In Schienen 4 update_column entspricht update_columns.
Lesen Sie mehr in .

+0

Nein, ich brauche nur diese Beziehung für das aktuelle Objekt zu löschen – dev85

Verwandte Themen