Class: ReferableReward

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
lib/generators/referable/templates/model/referable_reward.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.best_reward(acquireable_by) ⇒ Object



9
10
11
# 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) ⇒ Object



13
14
15
16
17
# 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

Instance Method Details

#next_reward(above: 0) ⇒ Object



19
20
21
22
23
24
25
26
27
# 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) ⇒ Object



29
30
31
32
33
34
35
36
37
# 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