使用 devise 加入驗證功能
Created by Piotr Steininger, @polishprince
Updated by Ernesto Jimenez, @ernesto_jimenez
Translation by JuanitoFatas, @JuanitoFatas
Updated by Tony Jian, @tonytonyjan
本指南假設妳已經跟著 打造第一個 APP 指南,寫好了一個 RailsGirls APP。
##0.安裝 devise RubyGem
打開專案的 Gemfile
,並加入下面這兩行
並在終端機裡輸入
這樣子 devise gem 就安裝完成了。 記得要重新啟動 Rails 伺服器哦。
##1.安裝 devise 到 Rails APP
在終端機裡輸入下面的命令:
##2.設定 Devise
devise 需要設定一組密鑰,先用 rake secret
來產生一組密鑰,將產生的內容貼至 config/initializers/devise.rb
的這一行(去掉 #
號)。
# config.secret_key = 'o34f89756234d52fddf79983d95483cf78343a5390c79e1cd5fa897711d89b612b0d293908e681a428650e1bdf5c5dd8d82effb3737d6918b3f9473ee5adf41d0'
改成
config.secret_key = '填入 rake secret 產生的內容'
接著需要設定 mailer 預設的網址選項,打開 config/environments/development.rb
,在檔案最後面找到 end
關鍵字,並在 end
上面加入這行:
打開 app/views/layouts/application.html.erb
,找到 <%= yield %>
,並在上面加入這段程式碼:
最後,如果妳預計要部署到 Heroku,打開 config/application.rb
,在檔案最後找到兩個 end
關鍵字,並在上面加入:
##3.設定 User Model
使用 devise 的 generator 來建立出 User Model:
教練: 解釋產生了什麼 Model,產生了什麼欄位?
##4.建立第一個使用者
現在建立第一個使用者的細節都設定完畢了。devise 幫妳產生了建立帳號、登入、登出所需的程式碼與路徑。
重新啟動 Rails 伺服器(CTRL-C + rails s
),打開 http://localhost:3000/users/sign_up 來建立妳的帳號吧。
##5.加入註冊與登入連結
現在只需要加入適當的連結到選單右上角,提示使用者已登入的訊息。
編輯 app/views/layouts/application.html.erb
,在這段的後面
加入
最後,讓使用者必須要登入,不然就跳到登入頁面。打開 app/controllers/application_controller.rb
,在這行程式碼後面:protect_from_forgery with: :exception
,新增這一行:
打開妳的瀏覽器,試著登入登出看看。
教練: 講解 user_signed_in?
以及 current_user
這兩個幫助方法 (helper)。 為什麼這兩個方法很有用?
下一步?
- 加入更多欄位到 User Model
- 加入 Idea 與 User Model 之間的關係
- 限制使用者只能編輯自己的 idea。
- 使用角色或權限來管理(用一個像是 CanCan 這樣流行的授權 gem)