class Locale < ApplicationRecord after_create_commit :generate_tag_names! belongs_to :language, foreign_key: :language_code, primary_key: :code belongs_to :script, foreign_key: :script_code, primary_key: :code enum :code, ja: 'ja', en: 'en', fr: 'fr' def self.nipponese = Locale.find('ja') private def generate_tag_names! ApplicationRecord.transaction do tag_ids = TagName.where(language_code:, primary_flg: true).pluck(:tag_id) Tag.where.not(id: tag_ids).find_each do TagName.create!(tag_id: _1.id, language_code:, name: TagName.generate_name(self, _1, _1.tag_name('ja')), script_code:, primary_flg: true, auto_generated: true, canonical_id: nil) end end end end