class ReferableReward

Public Class Methods

best_reward(acquireable_by) click to toggle source
# File lib/generators/referable/templates/model/referable_reward.rb, line 9
def self.best_reward(acquireable_by)
  where(acquireable_by: acquireable_by).order(referrals_required: :desc).first
end
zeroth_tier(acquireable_by) click to toggle source
# File lib/generators/referable/templates/model/referable_reward.rb, line 13
def self.zeroth_tier(acquireable_by)
  zeroth = find_by(referrals_required: 0, acquireable_by: acquireable_by)
  return zeroth if zeroth
  create!(reward: 'none', referrals_required: 0, acquireable_by: acquireable_by)
end

Public Instance Methods

next_reward(above: 0) click to toggle source
# File lib/generators/referable/templates/model/referable_reward.rb, line 19
def next_reward(above: 0)
  query = self.class
              .where(acquireable_by: acquireable_by)
              .where('referrals_required > ?', referrals_required)
              .where('referrals_required >= ?', above)
              .order(referrals_required: :asc)
              .limit(1)
  query.any? ? query.first : self
end
previous_reward(below: 10e5) click to toggle source
# File lib/generators/referable/templates/model/referable_reward.rb, line 29
def previous_reward(below: 10e5)
  query = self.class
              .where(acquireable_by: acquireable_by)
              .where('referrals_required < ?', referrals_required)
              .where('referrals_required <= ?', below)
              .order(referrals_required: :desc)
              .limit(1)
  query.any? ? query.first : self
end