class Tag < ApplicationRecord include Attachable, Filterable has_many :taggings, dependent: :destroy has_many :cards, through: :taggings validates :title, format: { without: /\A#/ } normalizes :title, with: -> { it.downcase } scope :alphabetically, -> { order("lower(title)") } scope :unused, -> { left_outer_joins(:taggings).where(taggings: { id: nil }) } def hashtag "#" + title end def cards_count cards.count end end