使用 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)。 為什麼他們很有用?
下一步?
- 加入更多欄位到 User 模型
- 加入 Idea 與 User 模型之間的關係
- 限制使用者只能編輯自己的 idea。
- 使用角色或權限來管理(用一個像是 CanCan 這樣流行的授權 gem)