saltare la convalida dopo creare rotaie mongoid
-
22-10-2019 - |
Domanda
Voglio saltare una convalida dopo la creazione di un oggetto. Consente di prendere un esempio
persona ha molte società e la società ha molte persone
persona ha molti piazzamenti e il posizionamento appartiene alla persona persona può avere un solo posizionamento attiva
modello di posizionamento ha una convalida che controlla se una persona ha già un posizionamento attivo quando salvato.
@placement is active placement
@employment.placement = @person
if @placement.save
#################
@person.placements << @placement
@company.placements << @placement
end
Ora, quando il posizionamento viene salvato per la prima volta, la sua Nessun problema viene salvato.
Ora il problema viene quando
@person.placements << @placement
Dato che la persona ha già posizionamento attivo attraverso @ placement.save.
@ person.placements << @placement salva di nuovo @placement e l'errore di convalida incendi di convalida per oggetto @placement.
C'è un modo in modo che io dico di non passare attraverso quella specifica convalida alcuni dove nella ############ regione del mio codice.
o eventuali soluzioni alternative sono i benvenuti.
Grazie
Soluzione
è possibile utilizzare: Save: validate => false
Altri suggerimenti
La prima cosa se si desidera salvare dopo tutte le convalide passa poi fare qualcosa di simile
if @placement.valid?
@person.placements << @placement
@company.placements << @placement
end
La prossima cosa è se si utilizza mongoid poi <<
chiamata operatore .save
su entrambi i documenti.
La soluzione può essere sia <<
sovrascrittura di mongoid, o la necessità di convalida speacify durante il quale l'azione.
validates :placeholder, :on => :create
E O
if @placement.valid?
@placement.person = @person
@company.placements << @placement
end