Module: TopicTagsMixin

Constant Summary collapse

DESCRIPTION_LIMIT =
80

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



6
7
8
9
# File 'app/serializers/concerns/topic_tags_mixin.rb', line 6

def self.included(klass)
  klass.attributes :tags
  klass.attributes :tags_descriptions
end

Instance Method Details

#include_tags?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'app/serializers/concerns/topic_tags_mixin.rb', line 11

def include_tags?
  scope.can_see_tags?(topic)
end

#tagsObject



15
16
17
# File 'app/serializers/concerns/topic_tags_mixin.rb', line 15

def tags
  all_tags.map(&:name)
end

#tags_descriptionsObject



19
20
21
22
23
24
# File 'app/serializers/concerns/topic_tags_mixin.rb', line 19

def tags_descriptions
  all_tags
    .each
    .with_object({}) { |tag, acc| acc[tag.name] = tag.description&.truncate(DESCRIPTION_LIMIT) }
    .compact
end

#topicObject



26
27
28
# File 'app/serializers/concerns/topic_tags_mixin.rb', line 26

def topic
  object.is_a?(Topic) ? object : object.topic
end