このコミットが含まれているのは:
+23
-1
@@ -64,6 +64,7 @@ class Tag < ApplicationRecord
|
||||
validates :category, presence: true, inclusion: { in: Tag.categories.keys }
|
||||
|
||||
validate :category_must_be_deerjikist_with_deerjikists
|
||||
validate :tag_names_must_be_valid
|
||||
|
||||
CATEGORY_PREFIXES = {
|
||||
'general:' => :general,
|
||||
@@ -77,10 +78,22 @@ class Tag < ApplicationRecord
|
||||
'mtr:' => :material,
|
||||
'meta:' => :meta }.freeze
|
||||
|
||||
def tag_name(language_code) = tag_names.find_by(language_code:, primary_flg: true)
|
||||
SYSTEM_TAG_NAMES = ['タグ希望', 'bot操作', 'ニジラー情報不詳', '動画', 'ニコニコ', 'YouTube'].freeze
|
||||
|
||||
def tag_name language_code
|
||||
if tag_names.loaded?
|
||||
tag_names.find { _1.language_code == language_code && _1.primary_flg }
|
||||
else
|
||||
tag_names.find_by(language_code:, primary_flg: true)
|
||||
end
|
||||
end
|
||||
def name(language_code) = tag_name(language_code)&.name
|
||||
def wiki_page = tag_name('ja')&.wiki_page
|
||||
|
||||
def system?
|
||||
tag_name('ja')&.name.in?(SYSTEM_TAG_NAMES)
|
||||
end
|
||||
|
||||
def deprecated? = deprecated_at?
|
||||
|
||||
def has_wiki = wiki_page.present?
|
||||
@@ -232,6 +245,7 @@ class Tag < ApplicationRecord
|
||||
|
||||
tag = Tag.create!(tag_name_id: tn.id, category:)
|
||||
tn.update!(tag:)
|
||||
tag.association(:tag_names).reset
|
||||
|
||||
tag
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
@@ -307,6 +321,14 @@ class Tag < ApplicationRecord
|
||||
|
||||
private
|
||||
|
||||
def tag_names_must_be_valid
|
||||
tag_names.each do |tag_name|
|
||||
next if tag_name.valid?
|
||||
|
||||
tag_name.errors[:name].each { errors.add :name, _1 }
|
||||
end
|
||||
end
|
||||
|
||||
def category_must_be_deerjikist_with_deerjikists
|
||||
if !(deerjikist?) && deerjikists.exists?
|
||||
errors.add :category, 'ニジラーと紐づいてゐるタグはニジラー・カテゴリである必要があります.'
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする