為什麼要用 Devise
支援多種會員系統模組
有許多方便的方法
前置作業:
- 建立一個 rails 專案 (本文章使用 7 版本)
- 安裝 devise gem
那我們就進入正題!
Step 1 把 devise 安裝起來
1 | $ bundle add devise |
1 | $ rails generate devise:install |
這個指令會幫初始化 devise 跟產出 devise 的 i18n yml 設定檔
1 | create config/initializers/devise.rb |
會跳一大串的英文,不外乎就是在跟你說基本的設定等等等
1 | Depending on your application's configuration some manual setup may be required: |
devise 的安裝就大概完成囉
Step 2 用 devise 產出 model
如果今天 model 想叫 admin 或其他的,直接把 User
的地方改 Admin
或其他名字就可以了
1 | $ rails generate devise User |
這個指令幫我們做出了 routes 及 model 及 migration 以及測試檔案
1 | invoke active_record |
我們可以來看一下 user.rb 這個檔案
1 | # Include default devise modules. Others available are: |
devise 除了做出基本的會員註冊、登入功能,還包含了多種功能,依序介紹一下
1 | confirmable: 發送註冊驗證信,並且在登入的時候,驗證使用者是否已經透過信件驗證 |
假設我們今天要使用 confirmable 功能,那就必須把 :confirmable 解除註解,並且加到 devise
後方
1 | # Include default devise modules. Others available are: |
在做 migration 以前,也要將 migration 的 :confirmable 解除註解
1 | # db/migrate/20230701155654_devise_create_users.rb |
設定完成後我們就可以 migrate 了
1 | > rails db:migrate |
然後重啟 server
試試 Devise 的基本註冊功能
先來檢視一下 devise 為我們做出來的路徑
1 | > rails routes -c devise |
注意這邊要用 devise 才會顯示出 devise 做出來的路徑
1 | Prefix Verb URI Pattern Controller#Action |
接下來我們可以直接到會員註冊的路徑了
1 | http://127.0.0.1:3000/users/sign_up |
貼到瀏覽器中會出現以下畫面
輸入註冊的 Email 及密碼就能註冊成功囉!
devise 幫你做的方法
Devise 有做出一些 controller 及 view 常見的方法
需要注意的是,假設 model 是 Admin
,請記得要把方法的 _user
改成 _admin
,其他依此類推
Controller action
舉例來說,假設我們的網站是使用者登入才可以使用,我們可以在 application controller 中加入 before_action :authenticate_user!
設定後,使用者要進入所有頁面前都需要先登入
View helper
如果頁面中有特定區塊是使用者登入才看得到的,我們可以加入 user_sign_in?
在 view 裡面我們可以這樣寫:
1 | <% if user_signed_in? %> |
另一個更常見的 helper 是 current_user
如果我們今天要在 view 顯示每個 user 的 email,就可以在 view 裡這樣寫:
1 | <%= current_user.email %> |
還有其他方法,要使用的話可以直接至 Devise 手冊翻閱
今天的介紹內容相對簡單,下一篇我們再繼續挖深一點!