5. Devise

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:


Signed in as. Not you?or

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
Tothebit

About Tothebit

Tothebit