Sha256: 601e95f1cf9e2b182e33dd8408bf826a8e0a25fde5c57b8efa167483cac7544b

Contents?: true

Size: 634 Bytes

Versions: 5

Compression:

Stored size: 634 Bytes

Contents

module Elabs
  module Concerns
    module Taggable
      extend ActiveSupport::Concern

      included do
        attr_writer :tags_list

        after_save :save_tags_list
      end

      def save_tags_list
        if @tags_list
          tags = []
          @tags_list.split(/, */).each do |t|
            tags.push Tag.find_or_create_by(name: t.chomp)
          end

          @tags_list = nil

          update(tags: tags) if tags.count.positive?
        end

        true
      end

      # Returns a list of comma-separated tags
      def tags_list
        @tags_list || tags.map(&:name).join(', ')
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
elabs-5.0.0 app/models/elabs/concerns/taggable.rb
elabs-4.0.0 app/models/elabs/concerns/taggable.rb
elabs-3.0.0 app/models/elabs/concerns/taggable.rb
elabs-2.0.0 app/models/elabs/concerns/taggable.rb
elabs-2.0.0.pre app/models/elabs/concerns/taggable.rb