Ruby on Rails: utilizzare Devise per la gestione degli utenti



Devise è un'ottima libreria per RoR dedicata alla gestione degli utenti.

Permette di gestire facilmente la registrazione, il recupero delle credenziali di accesso e i ruoli.
Vediamo i semplici passi necessari per implementarla all'interno di un progetto RubyOnRails.


Installiamo la gemma

Per prima cosa, modificare il file Gemfile del progetto aggiungendo la riga

gem 'devise'

e lanciando successivamente l'aggiornamento di bundle:

bundle install

Abilitiamo e configuriamo devise

Richiamiamo il seguente comando dalla console:

rails generate devise:install

Apriamo il file config/environments/development.rb e aggiungiamo prima della keyword end questa riga:

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

Modifichiamo il file app/views/layouts/application.html.erb aggiungendo prima del tag <%= yield %> questo codice:

<% if notice %>
<%= notice %>
<% end %>
<% if alert %>
<%= alert %>
<% end %>

Creiamo il modello

Generiamo il modello:

rails generate devise user

e applichiamo le modifiche al database:

rake db:migrate

Ora possiamo creare un nuovo utente

Avviamo il server (se non era stato già fatto) con rails s e colleghiamoci a http://localhost:3000/users/sign_up: se tutto è andato a buon fine, dovremmo vedere la pagina di creazione dell'account che ci permetterà di effettuare il sign-up.


Integriamo nell'app i link per il login e la creazione dell'account

Modifichiamo il file app/views/layouts/application.html.erb e aggiungiamo questo frammento di codice nel punto in cui vogliamo visualizzare i controlli:

<% if user_signed_in? %>
Logged in as <strong><%= current_user.email %></strong>.
<%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
<% else %>
<%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>

Published: July 09 2013

  • category: