sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuáles son buenas formas de obtener los detalles del usuario actual en los modelos?

El control de acceso en los rieles se realiza a nivel de controlador, no a nivel de modelo. Como resultado, Rails no proporciona ningún mecanismo para acceder al usuario actual, cookies, etcétera, desde el interior del código del modelo. Puede transportar los datos al modelo por parámetros a métodos, si así lo desea. Sin embargo, eso sería ignorar las decisiones de diseño de algunos de los mejores programadores de la industria, por lo que creo que probablemente no sea una buena elección.

En otras palabras, no hagas lo que estás tratando de hacer. Pon el conocimiento de cómo hacer las cosas en tu modelo, pero pon controles sobre quién puede hacerlas en el controlador.

Por otro lado, si está tratando de almacenar el usuario actual por algún motivo, debe hacerlo mediante algún tipo de asociación (o documento anidado, ya que está usando mongo). En ese caso, no use current_user dentro del modelo, sino que haga un attr_accessor en el usuario, establezca el usuario en la instancia de su modelo en el current_user en el controlador y luego guárdelo como lo necesite en su devolución de llamada.