Class: Lato::Invitation

Inherits:
ApplicationRecord show all
Defined in:
app/models/lato/invitation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#actionsObject

Returns the value of attribute actions.



3
4
5
# File 'app/models/lato/invitation.rb', line 3

def actions
  @actions
end

Instance Method Details

#accepted?Boolean

Helpers

Returns:

  • (Boolean)


49
50
51
# File 'app/models/lato/invitation.rb', line 49

def accepted?
  !!accepted_at
end

#c_email_invite_semaphore(value = nil) ⇒ Object

Cache



82
83
84
85
86
87
88
# File 'app/models/lato/invitation.rb', line 82

def c_email_invite_semaphore(value = nil)
  cache_key = "Lato::Invitation/c_email_invite_semaphore/#{id}"
  return Rails.cache.read(cache_key) if value.nil?

  Rails.cache.write(cache_key, value, expires_in: 2.minutes)
  value
end

#send_inviteObject

Operations



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'app/models/lato/invitation.rb', line 56

def send_invite
  if accepted?
    errors.add(:base, :already_accepted)
    return false
  end

  if c_email_invite_semaphore
    errors.add(:base, :email_sending_limit)
    return false
  end

  delivery = Lato::InvitationMailer.invite_mail(id).deliver_now
  unless delivery
    errors.add(:base, :email_sending_error)
    return false
  end

  c_email_invite_semaphore(true)

  true
end