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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top