class Lato::Invitation
def accepted?
def accepted? !!accepted_at end
def c_email_invite_semaphore(value = nil)
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
def send_invite
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