Sha256: 1b8eb55954ee031ce5845ddbc6aedfc69dd691279fa961b9bea921b07b56b66c
Contents?: true
Size: 1.31 KB
Versions: 4
Compression:
Stored size: 1.31 KB
Contents
# An invitation, tracks the sender and recipient, and what the recipient is invited to. # Generates a unique token for each invitation. The token is used in the invite url # to (more) securely identify the invite when a new user clicks to register. # class Invite < ActiveRecord::Base belongs_to :invitable, polymorphic: true belongs_to :sender, class_name: Invitation.configuration.user_model_class_name # Rails >= 5 makes belongs_to association required by default if Rails::VERSION::MAJOR >= 5 belongs_to :recipient, class_name: Invitation.configuration.user_model_class_name, optional: true else belongs_to :recipient, class_name: Invitation.configuration.user_model_class_name end before_create :generate_token before_save :set_email_case, on: :create before_save :check_recipient_existence validates :email, presence: true validates :invitable, presence: true validates :sender, presence: true def existing_user? recipient != nil end def generate_token self.token = SecureRandom.hex(20).encode('UTF-8') end def check_recipient_existence recipient = Invitation.configuration.user_model.find_by_email(email) self.recipient_id = recipient.id if recipient end private def set_email_case email.downcase! unless Invitation.configuration.case_sensitive_email end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
invitation-0.5.1 | app/models/invite.rb |
invitation-0.5.0 | app/models/invite.rb |
invitation-0.4.5 | app/models/invite.rb |
invitation-0.4.4 | app/models/invite.rb |