customize DeviseInvitable - thuy-econsys/rails_app GitHub Wiki
View
Run rails generate devise_invitable:views users
or if you want specific views, pass the the views after -v
flag, rails g devise_invitable:views -v registrations sessions
.
This invokes DeviseInvitable::Generators::MailerViewsGenerator which creates invitation_instructions
html and text files, as well as invoking form_for
, which generates edit
and new
template views.
Controller
https://github.com/scambra/devise_invitable#configuring-controllers-
app/controllers/devise/invitations_controller.rb:19:in 'create'
app/controllers/devise/invitations_controller.rb:80:in 'invite_resource'
For customizing your controllers, you will be extending Devise::InvitationsController which inherits from DeviseController:
class Users::InvitationsController < Devise::InvitationsController
# GET /resource/invitation/new
def new
super
end
# POST /resource/invitation
def create
super
end
# /resource/invitation/accept?invitation_token=abcdef
def edit
super
end
# PUT /resource/invitation
def update
super
end
private
# this is called when creating invitation
# should return an instance of resource class
def invite_resource
# skip sending emails on invite
super { |user| user.skip_invitation = true }
end
# this is called when accepting invitation
# should return an instance of resource class
def accept_resource
resource = resource_class.accept_invitation!(update_resource_params)
# Report accepting invitation to analytics
Analytics.report('invite.accept', resource.id)
resource
end
end
Configure your route to use your UsersInvitationsController in config/routes.rb
:
devise_for :users, :controllers => { invitations: 'users/invitations' }