0
0
RailsHow-ToBeginner · 4 min read

How to Use Devise in Rails: Simple Authentication Setup

To use devise in Rails, add it to your Gemfile, run bundle install, then generate Devise configuration with rails generate devise:install. Next, create a user model with rails generate devise User and run migrations to enable authentication features.
📐

Syntax

Using Devise in Rails involves these main commands and files:

  • gem 'devise' in Gemfile to add the library.
  • rails generate devise:install to set up initial configuration.
  • rails generate devise User to create a User model with authentication.
  • Running rails db:migrate to apply database changes.

Each step prepares your app to handle user sign-up, login, and logout.

bash
gem 'devise'

# Then run in terminal:
bundle install
rails generate devise:install
rails generate devise User
rails db:migrate
💻

Example

This example shows how to add Devise to a new Rails app and create a User model with authentication:

  • Add gem 'devise' to your Gemfile.
  • Run bundle install to install the gem.
  • Run rails generate devise:install to set up Devise.
  • Generate the User model with rails generate devise User.
  • Run rails db:migrate to create the users table.
  • Add before_action :authenticate_user! in your controllers to require login.
ruby
# Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 7.0'
gem 'devise'

# Terminal commands
bundle install
rails generate devise:install
rails generate devise User
rails db:migrate

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_action :authenticate_user!
end
Output
Running bundle install... Generating devise configuration files... Creating migration for users table... Migrating database... User authentication is now enabled.
⚠️

Common Pitfalls

Common mistakes when using Devise include:

  • Not running rails generate devise:install before generating models.
  • Forgetting to run rails db:migrate after generating the User model.
  • Not adding before_action :authenticate_user! to controllers, so authentication is not enforced.
  • Missing to configure default URL options in config/environments/development.rb for mailers.

Always follow the setup steps in order and check the Devise README for environment-specific settings.

bash
## Wrong: Skipping install step
rails generate devise User
# This will cause errors because Devise is not configured.

## Right:
rails generate devise:install
rails generate devise User
rails db:migrate
📊

Quick Reference

CommandPurpose
bundle installInstall gems including Devise
rails generate devise:installSet up Devise configuration
rails generate devise UserCreate User model with Devise modules
rails db:migrateApply database changes for users
before_action :authenticate_user!Require login in controllers

Key Takeaways

Add Devise gem and run bundle install to start.
Run devise:install generator before creating user models.
Generate User model with Devise and migrate database.
Use before_action :authenticate_user! to protect pages.
Check Devise docs for mailer and environment setup.