---
# System prepended metadata

title: 12th 鐵人賽 Day_17 devise view？ ＆ helper？
tags: [12th 鐵人賽]

---

---
title: 12th 鐵人賽 Day_17 devise view？ ＆ helper？
tags: 12th 鐵人賽
--- 
# 12th 鐵人賽 Day_17 devise view？ ＆ helper？

嗨！各位朋友大家好，打給後，歹嘎吼，胎尬喉，我是阿圓，今天進入了第17，存貨快用完了，只好請出這張one piece：
![](https://i.imgur.com/XhA0QFE.jpg)


昨天講完了 devise 的 controller 跟 strong_parameter，今天要來介紹生出view的頁面，以及使用 devise 時，常用的 helper 或 method：


## 建立devise view
使用`$ rails g devise:views` 指令 ，會把所有的view都長出來；但Devise 預設是所有model共用一組views，若想特別指定某個model的view：
```ruby=
# 在config/initializers/devise.rb 
config.scoped_views = true
```
```bash=
$ rails generate devise:views users
```
![](https://i.imgur.com/kl0outs.png)
預設會有這麼多！

若不想做出上面那麼多，可以用`-v`來指定要哪一個模塊(module)的view:
```bash=
$ rails generate devise:views -v registrations confirmations
```
那就只會長出下面這樣：
![](https://i.imgur.com/d8oxRhP.png)

---
## 好用的helper
[手冊](https://bre.is/wkEAfGmu)
devise 提供了很多helper，可以參閱上面手冊，這邊列出幾個比較常用的

1. **authenticate_user!** 可驗證使用者是否有權限，否則轉址
2. **user_signed_in?** 會去檢查此時使用者是否有session，回傳布林值
3. **current_user** 撈出現在的使用者資料
4. **user_session** 得到user現在的session

可以在 controller 裡使用的方法
1. **after_sign_in_path_for(resource_or_scope) ⇒ Object**
2. **after_sign_out_path_for(resource_or_scope) ⇒ Object** 定義使用者登入、登出後，轉址去哪裡 
3. **devise_controller? ⇒ Boolean** 判斷controller是否為devise_controller
4. **devise_parameter_sanitizer ⇒ Object** 上面兩個配合修改permit使用，請參考下方[strong_parameters](##strong_parameters)
5. **devise_group(group_name, opts = {}) ⇒ Object**
可以將不同的 model 群組起來，example:
```ruby=
Class BlogsController 
    devise_group :blogger, contains: [:user, :admin]
```

看到這裡，是不是覺得 devise 超好用啊，就可以省下一堆的時間。
好啦，devise就介紹到這邊(我好像越來越混了ＱＱ)，明天我們繼續回到部落格的部分，感謝各位看到這邊，若有任何建議，請各位不吝指教！我們明天見！
![](https://i.imgur.com/PPbpd2b.gif)