Sha256: 776ce3037f86251004f24c0d1096220c18bffa1c0b55b420eceead258413c0e6
Contents?: true
Size: 997 Bytes
Versions: 14
Compression:
Stored size: 997 Bytes
Contents
module Invitations::Base extend ActiveSupport::Concern included do belongs_to :team belongs_to :from_membership, class_name: "Membership" has_one :membership, dependent: :nullify accepts_nested_attributes_for :membership validates :email, presence: true, uniqueness: {scope: :team} after_create :set_added_by_membership after_create :send_invitation_email attribute :uuid, default: -> { SecureRandom.hex } def roles membership.roles end end def set_added_by_membership membership.update(added_by: from_membership) end def send_invitation_email UserMailer.invited(uuid).deliver_later end def accept_for(user) User.transaction do user.memberships << membership user.update(current_team: team, former_user: false) destroy end end def name I18n.t("invitations.values.name", team_name: team.name) end def is_for?(user) user.email.downcase.strip == email.downcase.strip end end
Version data entries
14 entries across 14 versions & 1 rubygems