module Referable

Constants

VERSION

Public Instance Methods

acquired_reward!() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 29
def acquired_reward!
  update!(last_reward_acquired: last_reward_acquired.next_reward(above: referrals.size))
end
distance_to_next_reward() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 23
def distance_to_next_reward
  last_reward_acquired
    .next_reward(above: referrals.size)
    .referrals_required - referrals.size
end
increment!(attribute, by = 1) click to toggle source
Calls superclass method
# File lib/generators/referable/templates/concerns/referable.rb, line 33
def increment!(attribute, by = 1)
  super
  check_for_new_reward
end
percent_to_next_reward() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 14
def percent_to_next_reward
  last_tier_count = last_reward_acquired.referrals_required
  next_tier_count = last_reward_acquired
                      .next_reward(above: referrals.size)
                      .referrals_required - last_tier_count
  current_count = referrals.size - last_tier_count
  (current_count.to_f / next_tier_count) * 100
end

Private Instance Methods

add_referral_slug() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 47
def add_referral_slug
  self.referral_slug = create_referral_slug unless referral_slug
end
check_for_new_reward() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 40
def check_for_new_reward
  count = referrals.size
  if count >= last_reward_acquired.next_reward(above: count).referrals_required
    acquired_reward!
  end
end
create_referral_slug() click to toggle source
# File lib/generators/referable/templates/concerns/referable.rb, line 51
def create_referral_slug
  slug = Utilities.generate_friendly_chars(3)
  self.class.exists?(referral_slug: slug) ? create_referral_slug : slug
end