2016-11-01 6 views
0

Ich habe ein Hausmodell mit einer has_many-Assoziation für Räume.So fügen Sie ungültige Datensätze zu has_many hinzu: durch Zuordnung

house = House.find 1 
dining_room = Room.find 1 
living_room = Room.find 2 

Der living_room ist kein gültiger Datensatz. Also wenn ich die Zimmer zum Haus hinzufügen

house << dining_room 
house << living_room 

der living_room wurde nicht hinzugefügt, weil es ungültig ist.

Wie kann ich die Validierung überspringen, wenn ich einen bestehenden Datensatz zu einer has_many-association hinzufüge?

+0

Wie wurden beide Räume gespeichert, wenn sie ungültig sind? –

+0

'living_room = Room.find 2'? Dies ist ein gültiger Eintrag auf Ihrem Zimmertisch? – sa77

+0

@ j-dexx Ich habe die Validierung nach dem Einfügen der Daten hinzugefügt – Christian

Antwort

1

können Sie so etwas wie dies versuchen, ein Room Objekt zu einer House Objekt Überspringen Validierung zu assoziieren:

so etwas wie dies erklären in room.rb

def associate_room_to_house!(house) 
    self.house_id = house.id 
    self.save(:validate => false) 
end 

und dann diese Methode auf dem ungültigen Raum-Objekt verwenden.

house = House.find 1 
living_room = Room.find 2 

living_room.associate_room_to_house!(house) 
1

Wenn ein living_room zu einem Haus gehört, können Sie einfach die house_id auf diesem Wohnzimmerrekord aktualisieren, um dem Haus zu entsprechen, zu dem Sie gehören möchten.

Verwandte Themen