Module: Plutonium::Invites::Concerns::InviteUser

Extended by:
ActiveSupport::Concern
Defined in:
lib/plutonium/invites/concerns/invite_user.rb

Overview

InviteUser provides the core logic for inviting users to an entity.

Include this in your InviteUserInteraction and implement the required methods.

Examples:

Basic usage with polymorphic entity

class Organization::InviteUserInteraction < Plutonium::Resource::Interaction
  include Plutonium::Invites::Concerns::InviteUser

  def invite_class
    Invites::UserInvite
  end

  def membership_class
    OrganizationMembership
  end
end

Instance Method Summary collapse

Instance Method Details

#executeObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/plutonium/invites/concerns/invite_user.rb', line 38

def execute
  attrs = {
    entity: entity,
    email: email,
    role: role,
    invited_by: current_user,
    **additional_invite_attributes
  }
  attrs[:invitable] = invitable if invitable.present?

  invite_class.create!(attrs)

  succeed(resource).with_message(success_message)
rescue ActiveRecord::RecordInvalid => e
  failed(e.record.errors)
end