I love using Devise for application authentication. When I was creating the Realtime QA Tool I needed to make sure that the sign up form wasn’t publicly accessible. So I started doing a little bit of searching I found Devise Invitable. Devise invitable allows you to invite users via e-mail to your application.

Getting up and running with Devise Invitable is really easy. The documentation is pretty good and walks you through the setup process step by step.

You start out with two simple commands

rails generate devise_invitable:install
rails generate devise_invitable MODEL

Then, update your devise model to include the :invitable module

class User < ActiveRecord::Base
  devise :database_authenticatable, :confirmable, :invitable
end

and you’re good to go.

After Devise Invitable is installed and ready to go, I usually end up making an invitation action in one of my controllers. Devise Invitable does allow you to make a dedicated controller for it. But I find I can usually accomplish everything with a simple action that looks something like that

def invite_user
  @user = User.invite!(:email => params[:user][:email], :name => params[:user][:name])
  render :json => @user
end

Just like that, you can now invite users to your application.