Module: Refer
- Defined in:
- lib/refer.rb,
lib/refer/model.rb,
lib/refer/engine.rb,
lib/refer/version.rb,
lib/refer/controller.rb,
app/models/refer/visit.rb,
lib/refer/has_referrals.rb,
app/models/refer/referral.rb,
app/models/refer/referral_code.rb,
app/models/refer/application_record.rb
Defined Under Namespace
Modules: Controller, HasReferrals, Model
Classes: AlreadyReferred, ApplicationRecord, Engine, Error, InstallGenerator, ModelGenerator, Referral, ReferralCode, Visit
Constant Summary
collapse
- VERSION =
"1.0.4"
Class Method Summary
collapse
Class Method Details
.cookie(code) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/refer.rb', line 36
def self.cookie(code)
{
value: code,
expires: Refer.cookie_length.from_now
}
end
|
.mask_ip(ip) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/refer.rb', line 44
def self.mask_ip(ip)
return ip unless mask_ips
addr = IPAddr.new(ip)
if addr.ipv4?
addr.mask(24).to_s
else
addr.mask(48).to_s
end
end
|
.refer(code:, referee:) ⇒ Object
26
27
28
29
|
# File 'lib/refer.rb', line 26
def self.refer(code:, referee:)
return if referred?(referee)
ReferralCode.find_by(code: code)&.referrals&.create(referee: referee)
end
|
.refer!(code:, referee:) ⇒ Object
31
32
33
34
|
# File 'lib/refer.rb', line 31
def self.refer!(code:, referee:)
raise AlreadyReferred, "#{referee} has already been referred" if referred?(referee)
ReferralCode.find_by!(code: code).referrals.create!(referee: referee)
end
|
.referred?(referee) ⇒ Boolean
22
23
24
|
# File 'lib/refer.rb', line 22
def self.referred?(referee)
Referral.where(referee: referee).exists?
end
|