1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

devise(管理者admin)1

Last updated at Posted at 2021-09-26

初めてECサイト作成にてん?管理者って何...????????
となり半分くらい理解できたので過去の私に向けて

前提として
・アプリ作成済み
・deviseのインストールが終わっている
・namespace/customerとadminとでルーティングは分かれている

##概要
adminはログイン、ログアウトのみ
customerは新規登録、ログイン、ログアウトできる


モデルの確認

Customer

カラム     データ型  
name string
email string
address string
password string
Admin
カラム     データ型  
name string
email 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を使っている場合はルートに間違いがないか確認をしないとエラーになる場合もあるので確認する

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?