Sha256: 413276fbb98f2197ef43bef65993877ed8e6a19d4cbaf49e05742f0489de1f94

Contents?: true

Size: 692 Bytes

Versions: 30

Compression:

Stored size: 692 Bytes

Contents

module Concerns
  module Taggable
    extend ActiveSupport::Concern

    included do
      has_many :tagged_items, as: :taggable
    end

    def related(locale = I18n.locale)
      tagged_items = TaggedItem.where(tag_id: tags(locale).map(&:id), taggable_type: self.class.name)
      tagged_items.to_a.inject([]) do |memo,i|
        memo << self.class.find(i.taggable_id) unless i.taggable_id == id
        memo
      end.uniq
    end

    def tags(locale = I18n.locale)
      tagged_items.select { |i| i.tag.locale == locale.to_s }.map(&:tag)
    end

    def tags_string(locale = I18n.locale)
      tags(locale).map(&:name).join(',')
    end

    def taggable?
      true
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
udongo-6.2.1 app/models/concerns/taggable.rb
udongo-6.2.0 app/models/concerns/taggable.rb
udongo-6.1.0 app/models/concerns/taggable.rb
udongo-6.0.0 app/models/concerns/taggable.rb
udongo-5.9.0 app/models/concerns/taggable.rb
udongo-5.8.0 app/models/concerns/taggable.rb
udongo-5.7.0 app/models/concerns/taggable.rb
udongo-5.6.0 app/models/concerns/taggable.rb
udongo-5.5.0 app/models/concerns/taggable.rb
udongo-5.4.0 app/models/concerns/taggable.rb
udongo-5.3.1 app/models/concerns/taggable.rb
udongo-5.3.0 app/models/concerns/taggable.rb
udongo-5.2.0 app/models/concerns/taggable.rb
udongo-5.1.0 app/models/concerns/taggable.rb
udongo-5.0.2 app/models/concerns/taggable.rb
udongo-5.0.1 app/models/concerns/taggable.rb
udongo-5.0.0 app/models/concerns/taggable.rb
udongo-4.0.0 app/models/concerns/taggable.rb
udongo-3.0.0 app/models/concerns/taggable.rb
udongo-2.0.4 app/models/concerns/taggable.rb