---
# System prepended metadata

title: 安裝devise
tags: [Astro Camp, 5xruby, 套件]

---

###### tags: `5xruby` `Astro Camp` `套件`

# 安裝devise

---
### 安裝
1. ```gem 'devise', '~> 4.7', '>= 4.7.3'```
2. ```bundle install```

### 產生devise設定檔
```rails g devise:install```

### 加入寄信時預設的網站網址
編輯 config/environments/development.rb 和 production.rb ：
```config.action_mailer.default_url_options = { :host => 'localhost:3000' }```


### 建立model
1. 有兩種方式可供選擇
  (1)一般的方式 : 
```rails g devise User```
  (2)亦可於此時客製化自己想要的欄位名稱(例如多新增account_name、creator此兩個欄位):
```rails g devise User account_name creator```
2. ```rails db:migrate```



### 建立view
```rails g devise:views```
- 如果上一個步驟在建立model時，有額外新增自定義的欄位，則需注意app/views/layouts/application.html.erb裡的HTML樣板。將沒有自動生成的部分，自行補足。

### 將config/initializers/devise.rb裡的這行註解打開
```  config.scoped_views = true```

### 設定路徑
1. 先建立一個新的controller，以便指定首頁。
```rails g controller Pages```
2. 指定首頁(這邊以pages舉例)
```resources :pages```
```root to: 'pages#index'```
3. 在pages_controller.rb(預設首頁的controller)裡增加
```  
  before_action :authenticate_user!
  def index
  end
```
4. 到 view / layout / application.html.erb 裡面去調整註冊、登入與登出的按鈕
```
<% if current_user %>
   <li><%= link_to “登出”, destroy_user_session_path, method: :delete, class:”btn” %></li>
<% else %>
   <li><%= link_to “註冊”, new_user_registration_path, class:”btn” %></li>
   <li><%= link_to “登入”, new_user_session_path, class:”btn” %></li>
<% end %>
```
