Soy nuevo en Rails y me encontré con esta gema de diseño. ¿Puede decir qué significa esta línea "gema de diseño le permite tener varios modelos firmados"?
Devise se basa en la gema Warden, que es la parte que realmente hace el trabajo duro de autenticar a los usuarios y almacenar las reclamaciones en la sesión.
Warden acepta un argumento de alcance tanto al almacenar usuarios en la sesión como al recuperarlos. Un ejemplo muy simplificado del concepto es que:
# This code won't actually run as Warden is used as part of the # rack stack when dealing with HTTP requests warden = env['warden'] admin = Admin.create!(email: 'user@example.com', password: 'p4ssword') user = User.create!(email: 'user@example.com', password: 'p4ssword') warden.set_user(admin, scope: :admin) warden.set_user(user, scope: :user) warden.authenticate(:password, :admin).user == admin warden.authenticate(:password, :user).user == user Lo que sucede cuando llama a warden.set_user(admin, scope: :admin) es que guarda la identificación del registro en la sesión y usa el alcance como parte de la clave para que pueda almacenar diferentes identificaciones para diferentes alcances. Por lo tanto, tener "diferentes usuarios registrados al mismo tiempo".
Devise en realidad establece los alcances de Warden en función de los argumentos pasados a devise_for en su archivo de rutas. Si llama a devise_for :users entonces el alcance es :user .
Esta no es realmente una función que necesite usar o conocer como principiante, ya que de todos modos solo está usando un solo alcance la mayor parte del tiempo.