Class: Testimonials::Testimonial

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

Overview

One testimonial — text or video. Author attribution is optional and stored as loose fields (no foreign key to the host's user table) so the model is portable across apps with different user models.

Constant Summary collapse

KINDS =
%w[text video].freeze
STATUSES =
%w[pending approved archived].freeze
SOURCES =
%w[widget page nps].freeze

Instance Method Summary collapse

Instance Method Details

#avatar_attached?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'app/models/testimonials/testimonial.rb', line 40

def avatar_attached?
  respond_to?(:avatar) && avatar.attached?
end

#display_nameObject



44
45
46
# File 'app/models/testimonials/testimonial.rb', line 44

def display_name
  name.presence || (author_id.present? ? "##{author_id}" : nil)
end

#quoteObject

The curated pull-quote when the admin picked one, else the full text.



49
50
51
# File 'app/models/testimonials/testimonial.rb', line 49

def quote
  best_line.presence || body
end

#video?Boolean

Returns:

  • (Boolean)


34
# File 'app/models/testimonials/testimonial.rb', line 34

def video? = kind == 'video'

#video_attached?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/models/testimonials/testimonial.rb', line 36

def video_attached?
  respond_to?(:video_file) && video_file.attached?
end