Vediamo ora come utilizzare la gem devise per realizzare velocemente una pagina di login,logout degli utenti.
Per fare questo seguiamo le istruzioni al sito https://github.com/plataformatec/devise#getting-started
In sostanza quello che dobbiamo fare è aggiungere al file denominato Gemfile il seguente codice:
gem 'devise'
o eventualmente
gem 'devise', 'versione'
in questo modo forzerete ror ad usare una specifica versione di devise ed eviterete che eventuali aggiornamenti di versione modifichino la vostra applicazione rendendola non funzionante.
Una volta fatto questo lanciamo il comando
bundle install
che si occuperà di installare devise.
A questo punto abbiamo bisogno di un generatore,dunque da terminale diamo un bel:
rails generate devise:install
Perfetto fatto questo abbiamo installato devise,a questo punto non ci resta che configuarlo, per farlo andiamo su /config/environments/development.rb
e editiamo il file development.rb in questo modo
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
La cosa più importante che dobbiamo fare è sicuramente costruire bene la tabella che conterrà gli utenti all’interno della nostra base di dati.
Ora generiamo il model di devise (è necessario sostituire MODEL con il nome della vostra tabella:
rails generate devise MODEL
generelmente si preferisce usare
rails generate devise User
In quanto il modello User è mnemonico e richiama il fatto che all’interno della tabella
siano memorizzati gli utenti.
Il comando appena lanciato genererà il seguente output:
invoke active_record create app/models/user.rb invoke test_unit create test/unit/user_test.rb create test/fixtures/users.yml inject app/models/user.rb create db/migrate/20100412200407_devise_create_users.rb route devise_for :users
Ovvero ci indica cosa è stato creato.
Non è ancora finita,perchè a questo punto dobbiamo andare a definire come vogliamo che sia implementata la tabella User.
Apriamo con un editor di testo il file /app/models/user.rb
e modifichiamo il contenuto come segue:
class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :lockable, :timeoutable and :activatable # :confirmable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation end
Inoltre spostiamoci su db/migrate/data_ora_devise_create_users.rb ed editiamo come segue:
class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.database_authenticatable :null => false # t.confirmable t.recoverable t.rememberable t.trackable # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both t.timestamps end add_index :users, :email, :unique => true # add_index :users, :confirmation_token, :unique => true add_index :users, :reset_password_token, :unique => true # add_index :users, :unlock_token, :unique => true end def self.down drop_table :users end
La tabella user è ora pronta,dunque non rimane che caricarla all’interno del
db con il comando:
rake db:migrate
Ricapitolando abbiamo installato devise,lo abbiamo configurato,abbiamo creato la tabella user e ora? come facciamo a registrarci e a loggarci?
Semplice,basta lanciare rails server e andare al seguente URL:
http://localhost:3000/users/sign_up
Una volta registrati alla pagina sign_up avrete a disposizione anche la pagina /users/sign_in che vi permetterà di effettuare il login e la pagina /users/sign_out che vi permetterà di sloggarvi.
Attenzione che perchè tutto venga visualizzato correttamente dovete prima procedere alla modifica del file:
/app/views/layouts/application.html.erb
Altrimenti non vedrete i link,editiamolo come segue:
Inoltre ricordatevi di generare la vista dando il comando:
rails generate devise:views
Cancellazione:
Per eliminare devise dobbiamo prima di tutto rimuove la gemma:
sudo gem uninstall devise
Subito dopo dobbiamo distruggere lo scaffold se lo abbiamo creato:
rails destroy scaffold devise:user