Class: Abuse::UserTrustScore

Inherits:
Object
  • Object
show all
Defined in:
app/models/abuse/user_trust_score.rb

Constant Summary collapse

MAX_EVENTS =
100
SPAMCHECK_HAM_THRESHOLD =
0.5

Instance Method Summary collapse

Constructor Details

#initialize(user) ⇒ UserTrustScore

Returns a new instance of UserTrustScore.



8
9
10
# File 'app/models/abuse/user_trust_score.rb', line 8

def initialize(user)
  @user = user
end

Instance Method Details

#arkose_custom_scoreObject



28
29
30
# File 'app/models/abuse/user_trust_score.rb', line 28

def arkose_custom_score
  user_scores.arkose_custom_score.order_created_at_desc.first&.score || 0.0
end

#arkose_global_scoreObject



24
25
26
# File 'app/models/abuse/user_trust_score.rb', line 24

def arkose_global_score
  user_scores.arkose_global_score.order_created_at_desc.first&.score || 0.0
end

#remove_old_scores(source) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'app/models/abuse/user_trust_score.rb', line 36

def remove_old_scores(source)
  count = trust_scores_for_source(source).count
  return unless count > MAX_EVENTS

  Abuse::TrustScore.delete(
    trust_scores_for_source(source)
    .order_created_at_asc
    .limit(count - MAX_EVENTS)
  )
end

#spam_scoreObject



16
17
18
# File 'app/models/abuse/user_trust_score.rb', line 16

def spam_score
  user_scores.spamcheck.average(:score) || 0.0
end

#spammer?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'app/models/abuse/user_trust_score.rb', line 12

def spammer?
  spam_score > SPAMCHECK_HAM_THRESHOLD
end

#telesign_scoreObject



20
21
22
# File 'app/models/abuse/user_trust_score.rb', line 20

def telesign_score
  user_scores.telesign.order_created_at_desc.first&.score || 0.0
end

#trust_scores_for_source(source) ⇒ Object



32
33
34
# File 'app/models/abuse/user_trust_score.rb', line 32

def trust_scores_for_source(source)
  user_scores.where(source: source)
end