このコミットが含まれているのは:
2026-10-18 18:28:05 +09:00
コミット 569b9234c6
25個のファイルの変更、483行の追加、144行の削除
+12 -7
ファイルの表示
@@ -1,8 +1,7 @@
class Locale < ApplicationRecord
attr_accessor :certified_tag_names_path
before_save :lock_tag_creation!, if: :will_generate_tag_names?
after_save :generate_tag_names!, if: :needs_tag_names?
around_save :save_with_tag_names!, if: :will_generate_tag_names?
belongs_to :language, foreign_key: :language_code, primary_key: :code
belongs_to :script, foreign_key: :script_code, primary_key: :code
@@ -17,11 +16,17 @@ class Locale < ApplicationRecord
deprecated_at.nil? && (will_save_change_to_code? || will_save_change_to_deprecated_at?)
end
def lock_tag_creation! = SharedResourceIdAllocator.lock_space!(Tag, 'tags')
def save_with_tag_names!
completed = self.class.transaction(requires_new: true) do
SharedResourceIdAllocator.lock_space!(Tag, 'tags')
saved = yield
raise ActiveRecord::RecordNotSaved, 'Locale save was halted' unless saved
def needs_tag_names?
deprecated_at.nil? && (saved_change_to_code? || saved_change_to_deprecated_at?)
TagNameCompletion.for_locale!(self)
true
end
unless completed
raise ActiveRecord::RecordNotSaved, 'Locale tag completion was rolled back'
end
end
def generate_tag_names! = TagNameCompletion.for_locale!(self)
end
+5
ファイルの表示
@@ -111,6 +111,11 @@ class Tag < ApplicationRecord
def has_deerjikists = deerjikists.loaded? ? deerjikists.any? : deerjikists.exists?
def snapshot_aliases language_code
if tag_names.loaded?
return tag_names.select { _1.language_code == language_code && !_1.primary? }
.sort_by(&:name).map(&:name)
end
tag_names.where(language_code:, primary_flg: false).order(:name).pluck(:name)
end