MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Quali sono i modi migliori per ottenere i dettagli dell'utente corrente nei modelli?

Il controllo degli accessi nelle rotaie viene eseguito a livello di controller, non a livello di modello. Di conseguenza, rails non fornisce alcun meccanismo per accedere all'utente corrente, ai cookie, ecc., dall'interno del codice modello. Puoi trasferire i dati nel modello dai parametri ai metodi, se lo desideri. Tuttavia, ciò significherebbe ignorare le decisioni di progettazione di alcuni dei migliori programmatori del settore, quindi penso che probabilmente non sia una buona scelta.

In altre parole, non fare quello che stai cercando di fare. Metti le conoscenze su come fare le cose nel tuo modello, ma metti i controlli su chi può farle nel controller.

D'altra parte, se stai cercando di memorizzare l'utente corrente per qualche motivo, dovresti farlo con una sorta di associazione (o documento nidificato, dal momento che stai usando mongo). In tal caso, non utilizzare current_user all'interno del modello, ma piuttosto crea un attr_accessor su utente, imposta l'utente sull'istanza del tuo modello su current_user nel controller, quindi salvalo come necessario nella richiamata.