使用 Devise 加入驗證功能

Created by Piotr Steininger, @polishprince

Updated by Ernesto Jimenez, @ernesto_jimenez

Translated by JuanitoFatas, @JuanitoFatas

本指南假設妳已經跟著app 開發指南做好了一個 RailsGirls 應用

步驟零: 加入 devise gem

打開妳的 Gemfile 並加入下面這行

gem 'devise'

並執行

bundle install

來安裝 devise gem。 記得重新啟動 Rails 伺服器

步驟一:幫 app 設定好 devise

在終端裡執行以下命令。

rails g devise:install

接著打開 app/models/user.rb 加入這行:

attr_accessible :email, :password, :password_confirmation

步驟二:設定 Devise

確定妳的環境檔案已定義預設網址,打開 config/environments/development.rb 並加入:

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

這行放在 end 關鍵字之前哦

打開 app/views/layouts/application.html.erb 並加入:

<% if notice %>
  <p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
  <p class="alert alert-error"><%= alert %></p>
<% end %>

加在這行上面

<%= yield %>

最後,如果妳預計要佈署到 Heroku,打開 config/application.rb 並加入這行:

config.assets.initialize_on_precompile = false

從最下面數來第三行,加在兩個 end 關鍵字的上面。

步驟三:設定 User 模型

使用 devise 的產生器來建立 User 模型:

rails g devise user
rake db:migrate

教練: 解釋產生了什麼模型,產生了什麼欄位?

步驟四:建立第一個使用者

現在建立第一個使用者的細節都設定完畢了。Devise 幫妳產生了建立帳號、登入、登出所需的程式碼與路徑。

確定 Rails 伺服器有跑起來,打開 http://localhost:3000/users/sign_up 來建立妳的使用者帳戶。

步驟五:加入註冊與登入連結

現在只需要加入適當的連結,以及導覽列右上角提示使用者已登入的訊息。

編輯 app/views/layouts/application.html.erb 並加入:

<p class="navbar-text pull-right">
<% 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 %>

加在這段的後面

<ul class="nav">
  <li class="active"><a href="/ideas">Ideas</a></li>
</ul>

打開妳的瀏覽器,試著登入登出看看。

教練: 講解 user_signed_in? 以及 current_user 這兩個幫助方法 (helper)。 為什麼他們很有用?

下一步?