このコミットが含まれているのは:
2026-03-10 22:35:08 +09:00
コミット 474e0695ba
6個のファイルの変更72行の追加49行の削除
+4 -5
ファイルの表示
@@ -152,11 +152,9 @@ class Tag < ApplicationRecord
st.post_tags.find_each do |pt|
if PostTag.kept.exists?(post_id: pt.post_id, tag_id: target_tag.id)
pt.discard_by!(nil)
# discard 後の update! は禁止なので DB を直に更新
pt.update_columns(tag_id: target_tag.id, updated_at: Time.current)
else
pt.update!(tag: target_tag)
end
# discard 後の update! は禁止なので DB を直に更新
pt.update_columns(tag_id: target_tag.id, updated_at: Time.current)
end
tag_name = st.tag_name
@@ -167,7 +165,8 @@ class Tag < ApplicationRecord
if nico_flg
tag_name.destroy!
else
tag_name.update!(canonical: target_tag.tag_name)
tag_name.update_columns(canonical_id: target_tag.tag_name&.id,
updated_at: Time.current)
end
end
+7 -2
ファイルの表示
@@ -1,6 +1,4 @@
class TagName < ApplicationRecord
before_validation :sanitise_name
has_one :tag
has_one :wiki_page
@@ -12,6 +10,7 @@ class TagName < ApplicationRecord
validate :canonical_must_be_canonical
validate :alias_name_must_not_have_prefix
validate :canonical_must_not_be_present_with_tag_or_wiki_page
validate :name_must_be_sanitised
def self.canonicalise names
names = Array(names).map { |n| n.to_s.strip }.reject(&:blank?)
@@ -45,4 +44,10 @@ class TagName < ApplicationRecord
errors.add :canonical, 'タグもしくは Wiki の参照がある名前はエーリアスになれません.'
end
end
def name_must_be_sanitised
if name != TagNameSanitisationRule.sanitise(name)
errors.add :name, '名前に使用できない文字が含まれてゐます.'
end
end
end