Terminal
$ rails g devise Admin
$ rails db:migrate
Create a user to log in as admin.
db/seeds.rb
Admin.create!(
email: '[email protected]',
password: 'testtest'
)
Terminal
$ rails db:seed
Check if the admin user data is included.
Terminal
$ rails c
$ irb(main):001:0> Admin.all
$ irb(main):002:0> exit
Next, create the view and controller.
Terminal
$ rails g devise:views admins
$ rails g devise:controllers admins
Edit the routing.
config/routes.rb
devise_for :admins
↓
devise_for :admins, controllers: {
sessions: 'admins/sessions'
}
Add a header screen after login.
:application.html.erb
<% if customer_signed_in? %>
<li>
<%= link_to "Log out", destroy_customer_session_path, method: :delete %>
</li>
<% elsif admin_signed_in? %>
<li>
<%= link_to "Log out", destroy_admin_session_path, method: :delete %>
</li>
<% else %>
<li>
<%= link_to "sign up", new_customer_registration_path %>
</li>
<li>
<%= link_to "Login", new_customer_session_path %>
</li>
<% end %>
After logging in as an administrator, create a page transition and log-out destination.
controllers/admins/sessions_contoller.rb
protected
def after_sign_in_path_for(resource)
admin_items_path
end
def after_sign_out_path_for(resource)
new_admin_session_path
end
Recommended Posts