class NicoTagRelation < ApplicationRecord
  belongs_to :nico_tag, class_name: 'Tag'
  belongs_to :tag, class_name: 'Tag'

  validates :nico_tag_id, presence: true
  validates :tag_id, presence: true

  validate :nico_tag_must_be_nico
  validate :tag_mustnt_be_nico

  private

  def nico_tag_must_be_nico
    if nico_tag && nico_tag.category != 'nico'
      errors.add :nico_tag_id, 'タグのカテゴリがニコニコである必要があります．'
    end
  end

  def tag_mustnt_be_nico
    if tag && tag.category == 'nico'
      errors.add :tag_id, '連携先タグのカテゴリはニコニコであってはなりません．'
    end
  end
end
