class Invite

Schema Information

Table name: invites

id                    :integer          not null, primary key
registered            :boolean          default(FALSE)
inviter_id            :integer
invitee_id            :integer
created_at            :datetime
updated_at            :datetime
invitee_email         :string(255)
tutoring_session_reward :boolean          default(FALSE)
invite_token          :string(255)
accepted_at           :datetime
university_id            :integer

Constants

DEAFULT_MESSAGE

Constant to set default message.

Attributes

invitee_emails[RW]

Attribute accessor.

Public Class Methods

invite_users(emails, schedule) click to toggle source

To send invite email for event to the members in group.

# File app/models/invite.rb, line 52
def self.invite_users(emails, schedule)
  emails.each do |email|
    invite = self.find_or_create_by(inviter_id: User.current.id, invitee_email: email)
    invite_resource = invite.invite_resources.find_or_initialize_by(invite_id: invite.id, resource_id: schedule.id, resource_type: schedule.type)
    UserMailer.delay(queue: :mailer).invitation_email_schedule(invite, User.current, DEAFULT_MESSAGE, invite_resource) if invite_resource.save
  end
end

Public Instance Methods

accept!() click to toggle source

Update table with time when user accept the invitation.

# File app/models/invite.rb, line 66
def accept!
  update_columns(accepted_at: Time.now) unless accepted?
end
accepted?() click to toggle source

Returns true if user accepted the inivtation

# File app/models/invite.rb, line 71
def accepted?
  accepted_at?
end
add_token() click to toggle source

To generate random unique token.

# File app/models/invite.rb, line 61
def add_token
  self.invite_token = SecureRandom.uuid
end
assign_inviter() click to toggle source

Assign inviter

# File app/models/invite.rb, line 42
def assign_inviter
  self.inviter = User.current
end
send_invitation_email() click to toggle source

Send invitation email

# File app/models/invite.rb, line 47
def send_invitation_email
  UserMailer.delay(queue: :mailer).invitation_email(self, User.current, DEAFULT_MESSAGE)
end
update_registered(user) click to toggle source

To set the invitee and registered attributes of Invite.

# File app/models/invite.rb, line 76
def update_registered user
  self.invitee = user
  self.registered = true
  self.save
end