Salta la convalida per alcuni membri nei modelli associati durante la creazione/aggiornamento
-
29-10-2019 - |
Domanda
Ho i seguenti 4 modelli
Hotel (name)
has_one :address
has_one :contact
has_one :bank_account
validates_presence_of :name
def build_dependencies
build_contact
build_address
build_bank_account
end
Address (phone, street_address, hotel_id)
belongs_to :hotel
validates_presence_of :phone, :street_address
Contact (name, email, hotel_id)
belongs_to :hotel
validates_presence_of :name, :email
BankAccount (name, number, hotel_id)
belongs_to :hotel
validates_presence_of :name, :number
In un modulo utilizzato per creare un hotel, prendo input sia per il nome che per l'e -mail per il modello di contatto, ma solo telefono per il modello di indirizzo.
HotelController#new
@hotel = Hotel.new
@hotel.build_dependencies #this creates empty Contact and Address to generate the form fields
#render the form to create the hotel
HotelController#create
#receive form data
@hotel = Hotel.new
@hotel.build_dependencies
@hotel.save :validate => false
@hotel.attributes = params[:hotel]
@hotel.save :validate => false
Questo è l'unico modo in cui sono stato in grado di creare un hotel con informazioni di contatto, telefono da indirizzo e conto bancario vuoto. Ho dovuto chiamare
@hotel.save :validate => false
La prima volta per salvare l'istanza dell'hotel con istanze vuote di BankAccount, indirizzo, contatto. Quindi ho dovuto aggiornare_attributes su contatto e indirizzo e poi
@hotel.save :validate => false
Per garantire che i dati del modulo originale siano stati salvati completamente come previsto.
Questo, al di là del dubbio, è un brutto pezzo di codice. Qualcuno può dirmi come ripulirlo?
Nessuna soluzione corretta