Module: PagesCore::Taggable

Extended by:
ActiveSupport::Concern
Included in:
Page
Defined in:
app/models/concerns/pages_core/taggable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#serialized_tagsObject



24
25
26
# File 'app/models/concerns/pages_core/taggable.rb', line 24

def serialized_tags
  tags.order("name ASC").map(&:name).to_json
end

#serialized_tags=(json) ⇒ Object



28
29
30
# File 'app/models/concerns/pages_core/taggable.rb', line 28

def serialized_tags=(json)
  tag_with(ActiveSupport::JSON.decode(json))
end

#tag_listObject



45
46
47
# File 'app/models/concerns/pages_core/taggable.rb', line 45

def tag_list
  tag_names.join(", ")
end

#tag_list=(tag_list) ⇒ Object



41
42
43
# File 'app/models/concerns/pages_core/taggable.rb', line 41

def tag_list=(tag_list)
  tag_with(tag_list)
end

#tag_namesObject



49
50
51
# File 'app/models/concerns/pages_core/taggable.rb', line 49

def tag_names
  tags.map(&:name).sort
end

#tag_with(*list) ⇒ Object



32
33
34
35
36
37
38
39
# File 'app/models/concerns/pages_core/taggable.rb', line 32

def tag_with(*list)
  Tag.transaction do
    taggings.destroy_all
    Tag.parse(list).each do |name|
      Tag.find_or_create_by(name: name).on(self)
    end
  end
end