Per la mia app, ho diversi punti di accesso per la registrazione che convalidano le cose in modo diverso.Rails come impostare una variabile temporanea che non è un campo di database
Quindi, nella registrazione principale, non è richiesto nulla tranne il campo email e password. In un campo di iscrizione alternativo, sono necessari molti altri. Quindi nel modello utente ho
validate_presence_of :blah, :lah, :foo, :bah, :if => :flag_detected
def flag_detected
!self.flag.nil?
end
Voglio impostare quella bandiera attraverso il controller. Tuttavia quel flag non è un campo di database. Mi chiedo solo se è possibile farlo in Rails o c'è qualcosa di sbagliato nel modo in cui sto pensando a questo? In tal caso, qual è il modo migliore per raggiungere questo obiettivo? Grazie.
"variabili di istanza" (esposte tramite accessor, ad esempio 'attr', se necessario). Spetta al dibattito se è una "buona pratica" farlo in un modello, proprio perché non sono * parte * del modello * persistito *. Tuttavia, in un controller, perché no? –
Ho solo bisogno di essere una variabile temporanea per quel salvataggio chiamato dal controller. Quando ho impostato @ user.flag = true nel controller, in realtà non lo vedo nel modello. – gtr32x
Quindi devo definire un attr_accessor ad esso? Cosa succede se ho già attr_protected, c'è comunque intorno a questo? – gtr32x