Class: Testimonials::NpsResponse

Inherits:
ApplicationRecord show all
Defined in:
app/models/testimonials/nps_response.rb

Overview

One answer to "How likely are you to recommend us?" (0–10).

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.score(scope = all) ⇒ Object

The classic Net Promoter Score: %promoters − %detractors, −100..100.



16
17
18
19
20
21
22
23
# File 'app/models/testimonials/nps_response.rb', line 16

def self.score(scope = all)
  total = scope.count
  return nil if total.zero?

  promoters = scope.where(score: 9..10).count
  detractors = scope.where(score: 0..6).count
  ((promoters - detractors) * 100.0 / total).round
end

Instance Method Details

#detractor?Boolean

Returns:

  • (Boolean)


13
# File 'app/models/testimonials/nps_response.rb', line 13

def detractor? = score <= 6

#passive?Boolean

Returns:

  • (Boolean)


12
# File 'app/models/testimonials/nps_response.rb', line 12

def passive? = score.between?(7, 8)

#promoter?Boolean

Returns:

  • (Boolean)


11
# File 'app/models/testimonials/nps_response.rb', line 11

def promoter? = score >= 9