初めてECサイト作成にてん?管理者って何...????????
となり半分くらい理解できたので過去の私に向けて
前提として
・アプリ作成済み
・deviseのインストールが終わっている
・namespace/customerとadminとでルーティングは分かれている
##概要
adminはログイン、ログアウトのみ
customerは新規登録、ログイン、ログアウトできる
モデルの確認
Customer
カラム | データ型 |
---|---|
name | string |
string | |
address | string |
password | string |
Admin |
カラム | データ型 |
---|---|
name | string |
string | |
password | string |
###customer、adminそれぞれdeviseで作成
モデルに必要な記述を終えた後は rails db:migrate を行いましょう
終えた後それぞれコントローラーを作成しておきます(この後使います)
$ rails g devise Customer
$ rails g devise:controllers customers #コントローラー作成
$ rails g devise Admin
$ rails g devise:controllers admins
ついでにAdminのデータを作ります
.seed.rb
Admin!(
name: testtest,
email: test@test,
password: testtest
)
反映することを忘れないように$ rails db:seed
これでデータが登録されたのでadmin/sign_inでログインできるようになります
次はログイン後、ログアウト後の遷移先を決めます
admins/sessions_controller.rb
protected
def after_sign_in_path_for(resource)
root_to #任意のページ
end
def after_sign_out_path_for(resource)
new_admin_session_path
end
これでログイン後に任意のページに、ログアウト後ログインページに遷移する
追記
application.html.erb
<% if customer_signed_in? %>
<li class="nav-item">
<%= link_to 'ログアウト', destroy_customer_session_path, method: :delete, class: 'nav-link text-dark border rounded' %>
</li>
<% elsif admin_signed_in? %>
<li class="nav-item">
<%= link_to 'ログアウト', destroy_admin_session_path, method: :delete, class: 'nav-link text-dark border rounded' %>
</li>
<% else %>
<% end %>
とすることで会員用と管理者用のヘッダーが変更できる。
namespaseを使っている場合はルートに間違いがないか確認をしないとエラーになる場合もあるので確認する