このコミットが含まれているのは:
@@ -0,0 +1,19 @@
|
|||||||
|
class CreateEvents < ActiveRecord::Migration[8.0]
|
||||||
|
def change
|
||||||
|
create_table :events do |t|
|
||||||
|
t.string :event_type, null: false, index: true
|
||||||
|
t.text :reason
|
||||||
|
t.references :reverted_from_event, foreign_key: { to_table: :events }
|
||||||
|
t.json :metadata
|
||||||
|
t.binary :ip_address, limit: 16, index: true
|
||||||
|
t.references :created_by_user, index: true, foreign_key: false
|
||||||
|
t.datetime :created_at, null: false, index: true
|
||||||
|
end
|
||||||
|
|
||||||
|
add_reference :post_versions, :event, foreign_key: true, after: :original_created_before
|
||||||
|
add_reference :tag_versions, :event, foreign_key: true, after: :deprecated_at
|
||||||
|
add_reference :material_versions, :event, foreign_key: true
|
||||||
|
add_reference :tag_description_versions, :event, foreign_key: true, after: :source_version_no
|
||||||
|
add_reference :tag_group_versions, :event, foreign_key: true, after: :placements
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,207 @@
|
|||||||
|
class BackfillEventsFromExistingVersions < ActiveRecord::Migration[8.0]
|
||||||
|
class MigrationEvent < ActiveRecord::Base
|
||||||
|
self.table_name = 'events'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationPostVersion < ActiveRecord::Base
|
||||||
|
self.table_name = 'post_versions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationTagVersion < ActiveRecord::Base
|
||||||
|
self.table_name = 'tag_versions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationMaterialVersion < ActiveRecord::Base
|
||||||
|
self.table_name = 'material_versions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationTagDescriptionVersion < ActiveRecord::Base
|
||||||
|
self.table_name = 'tag_description_versions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationTagGroupVersion < ActiveRecord::Base
|
||||||
|
self.table_name = 'tag_group_versions'
|
||||||
|
end
|
||||||
|
|
||||||
|
class MigrationLocale < ActiveRecord::Base
|
||||||
|
self.table_name = 'locales'
|
||||||
|
end
|
||||||
|
|
||||||
|
def up
|
||||||
|
# create → posts.create
|
||||||
|
# update → posts.update
|
||||||
|
raise if MigrationPostVersion.where.not(event_type: ['create', 'update']).exists?
|
||||||
|
|
||||||
|
# create → materials.create
|
||||||
|
# update → materials.update
|
||||||
|
if MigrationMaterialVersion.where.not(event_type: ['create', 'update']).exists?
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
|
# create → posts.create / posts.update / materials.create / materials.update / unknown
|
||||||
|
# update → tags.update / locales.create
|
||||||
|
# discard → unknown
|
||||||
|
if MigrationTagVersion.where.not(event_type: ['create', 'update', 'discard']).exists?
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
|
# create → tag_descriptions.create
|
||||||
|
# update → tag_descriptions.update
|
||||||
|
if MigrationTagDescriptionVersion.where.not(event_type: ['create', 'update']).exists?
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
|
# create → tag_groups.create
|
||||||
|
# update → tag_groups.update
|
||||||
|
if MigrationTagGroupVersion.where.not(event_type: ['create', 'update']).exists?
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
|
||||||
|
# post_versions の Backfill
|
||||||
|
MigrationPostVersion.find_each do |pv|
|
||||||
|
ev = MigrationEvent.create!(event_type: "posts.#{ pv.event_type }",
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: pv.created_by_user_id,
|
||||||
|
created_at: pv.created_at)
|
||||||
|
pv.update_columns(event_id: ev.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
# material_versions の Backfill
|
||||||
|
MigrationMaterialVersion.find_each do |m|
|
||||||
|
ev = MigrationEvent.create!(event_type: "materials.#{ m.event_type }",
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: m.created_by_user_id,
|
||||||
|
created_at: m.created_at)
|
||||||
|
m.update_columns(event_id: ev.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
# ロカール追加に伴ふ該当語言のタグ名称追加異動のみ分離
|
||||||
|
ids_cause_of_locale_creation = []
|
||||||
|
MigrationLocale.where('created_at > ?', MigrationLocale.minimum(:created_at)).find_each do |l|
|
||||||
|
ev = MigrationEvent.create!(event_type: 'locales.create',
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: nil,
|
||||||
|
created_at: l.created_at)
|
||||||
|
|
||||||
|
MigrationTagVersion
|
||||||
|
.where('created_at > ?', l.created_at)
|
||||||
|
.where(event_type: 'update', event_id: nil)
|
||||||
|
.find_each do |t|
|
||||||
|
next unless t.names.key?(l.language_code)
|
||||||
|
|
||||||
|
prev = MigrationTagVersion.find_by(tag_id: t.tag_id, version_no: t.version_no - 1)
|
||||||
|
next if prev.nil? || prev.names.key?(l.language_code)
|
||||||
|
|
||||||
|
t.update_columns(event_id: ev.id)
|
||||||
|
|
||||||
|
ids_cause_of_locale_creation << t.id
|
||||||
|
end
|
||||||
|
|
||||||
|
ev.destroy! unless MigrationTagVersion.where(event_id: ev.id).exists?
|
||||||
|
end
|
||||||
|
|
||||||
|
# tag_versions の Backfill
|
||||||
|
MigrationTagVersion.where.not(id: ids_cause_of_locale_creation).find_each do |t|
|
||||||
|
ev =
|
||||||
|
case t.event_type
|
||||||
|
when 'create'
|
||||||
|
post =
|
||||||
|
MigrationPostVersion
|
||||||
|
.where('JSON_CONTAINS(tags_json, ?) <> 0', { tag_id: t.tag_id }.to_json)
|
||||||
|
.find_by(created_at: MigrationPostVersion
|
||||||
|
.where('JSON_CONTAINS(tags_json, ?) <> 0',
|
||||||
|
{ tag_id: t.tag_id }.to_json)
|
||||||
|
.minimum(:created_at))
|
||||||
|
material =
|
||||||
|
MigrationMaterialVersion
|
||||||
|
.where(tag_id: t.tag_id)
|
||||||
|
.find_by(created_at: MigrationMaterialVersion
|
||||||
|
.where(tag_id: t.tag_id)
|
||||||
|
.minimum(:created_at))
|
||||||
|
if post
|
||||||
|
if material
|
||||||
|
if post.created_at < material.created_at
|
||||||
|
MigrationEvent.find(post.event_id)
|
||||||
|
else
|
||||||
|
MigrationEvent.find(material.event_id)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
MigrationEvent.find(post.event_id)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if material
|
||||||
|
MigrationEvent.find(material.event_id)
|
||||||
|
else
|
||||||
|
MigrationEvent.create!(event_type: 'unknown',
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: t.created_by_user_id,
|
||||||
|
created_at: t.created_at)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
when 'update'
|
||||||
|
MigrationEvent.create!(event_type: 'tags.update',
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: t.created_by_user_id,
|
||||||
|
created_at: t.created_at)
|
||||||
|
when 'discard'
|
||||||
|
MigrationEvent.create!(event_type: 'unknown',
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: t.created_by_user_id,
|
||||||
|
created_at: t.created_at)
|
||||||
|
end
|
||||||
|
t.update_columns(event_id: ev.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
# tag_description_versions の Backfill
|
||||||
|
MigrationTagDescriptionVersion.find_each do |td|
|
||||||
|
ev = MigrationEvent.create!(event_type: "tag_descriptions.#{ td.event_type }",
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: td.created_by_user_id,
|
||||||
|
created_at: td.created_at)
|
||||||
|
td.update_columns(event_id: ev.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
# tag_group_versions の Backfill
|
||||||
|
MigrationTagGroupVersion.find_each do |tg|
|
||||||
|
ev = MigrationEvent.create!(event_type: "tag_groups.#{ tg.event_type }",
|
||||||
|
reason: nil,
|
||||||
|
reverted_from_event_id: nil,
|
||||||
|
metadata: nil,
|
||||||
|
ip_address: nil,
|
||||||
|
created_by_user_id: tg.created_by_user_id,
|
||||||
|
created_at: tg.created_at)
|
||||||
|
tg.update_columns(event_id: ev.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
change_column_null :post_versions, :event_id, false
|
||||||
|
change_column_null :tag_versions, :event_id, false
|
||||||
|
change_column_null :material_versions, :event_id, false
|
||||||
|
change_column_null :tag_description_versions, :event_id, false
|
||||||
|
change_column_null :tag_group_versions, :event_id, false
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
raise ActiveRecord::IrreversibleMigration, '戻せません.'
|
||||||
|
end
|
||||||
|
end
|
||||||
生成ファイル
+32
-1
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
ActiveRecord::Schema[8.0].define(version: 2026_11_02_010000) do
|
||||||
create_table "active_storage_attachments", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
create_table "active_storage_attachments", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
t.string "name", null: false
|
t.string "name", null: false
|
||||||
t.string "record_type", null: false
|
t.string "record_type", null: false
|
||||||
@@ -48,6 +48,21 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.index ["tag_id"], name: "index_deerjikists_on_tag_id"
|
t.index ["tag_id"], name: "index_deerjikists_on_tag_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "events", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
|
t.string "event_type", null: false
|
||||||
|
t.text "reason"
|
||||||
|
t.bigint "reverted_from_event_id"
|
||||||
|
t.json "metadata"
|
||||||
|
t.binary "ip_address", limit: 16
|
||||||
|
t.bigint "created_by_user_id"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.index ["created_at"], name: "index_events_on_created_at"
|
||||||
|
t.index ["created_by_user_id"], name: "index_events_on_created_by_user_id"
|
||||||
|
t.index ["event_type"], name: "index_events_on_event_type"
|
||||||
|
t.index ["ip_address"], name: "index_events_on_ip_address"
|
||||||
|
t.index ["reverted_from_event_id"], name: "index_events_on_reverted_from_event_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "external_tags", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
create_table "external_tags", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
t.string "platform", limit: 16, null: false
|
t.string "platform", limit: 16, null: false
|
||||||
t.string "name", null: false
|
t.string "name", null: false
|
||||||
@@ -250,8 +265,10 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.string "source_path"
|
t.string "source_path"
|
||||||
t.string "source_file_id"
|
t.string "source_file_id"
|
||||||
t.string "normalized_source_key"
|
t.string "normalized_source_key"
|
||||||
|
t.bigint "event_id", null: false
|
||||||
t.index ["created_by_user_id"], name: "index_material_versions_on_created_by_user_id"
|
t.index ["created_by_user_id"], name: "index_material_versions_on_created_by_user_id"
|
||||||
t.index ["discarded_at"], name: "index_material_versions_on_discarded_at"
|
t.index ["discarded_at"], name: "index_material_versions_on_discarded_at"
|
||||||
|
t.index ["event_id"], name: "index_material_versions_on_event_id"
|
||||||
t.index ["file_blob_id"], name: "index_material_versions_on_file_blob_id"
|
t.index ["file_blob_id"], name: "index_material_versions_on_file_blob_id"
|
||||||
t.index ["material_id", "version_no"], name: "index_material_versions_on_material_id_and_version_no", unique: true
|
t.index ["material_id", "version_no"], name: "index_material_versions_on_material_id_and_version_no", unique: true
|
||||||
t.index ["material_id"], name: "index_material_versions_on_material_id"
|
t.index ["material_id"], name: "index_material_versions_on_material_id"
|
||||||
@@ -380,10 +397,12 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.text "parent_post_ids", null: false
|
t.text "parent_post_ids", null: false
|
||||||
t.datetime "original_created_from"
|
t.datetime "original_created_from"
|
||||||
t.datetime "original_created_before"
|
t.datetime "original_created_before"
|
||||||
|
t.bigint "event_id", null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.bigint "created_by_user_id"
|
t.bigint "created_by_user_id"
|
||||||
t.integer "video_ms"
|
t.integer "video_ms"
|
||||||
t.index ["created_by_user_id"], name: "index_post_versions_on_created_by_user_id"
|
t.index ["created_by_user_id"], name: "index_post_versions_on_created_by_user_id"
|
||||||
|
t.index ["event_id"], name: "index_post_versions_on_event_id"
|
||||||
t.index ["post_id", "version_no"], name: "index_post_versions_on_post_id_and_version_no", unique: true
|
t.index ["post_id", "version_no"], name: "index_post_versions_on_post_id_and_version_no", unique: true
|
||||||
t.index ["post_id"], name: "index_post_versions_on_post_id"
|
t.index ["post_id"], name: "index_post_versions_on_post_id"
|
||||||
t.index ["video_ms", "post_id"], name: "idx_post_versions_video_ms_post_id"
|
t.index ["video_ms", "post_id"], name: "idx_post_versions_video_ms_post_id"
|
||||||
@@ -448,9 +467,11 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.text "body", null: false
|
t.text "body", null: false
|
||||||
t.string "source_language_code", limit: 16
|
t.string "source_language_code", limit: 16
|
||||||
t.integer "source_version_no"
|
t.integer "source_version_no"
|
||||||
|
t.bigint "event_id", null: false
|
||||||
t.bigint "created_by_user_id"
|
t.bigint "created_by_user_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.index ["created_by_user_id"], name: "index_tag_description_versions_on_created_by_user_id"
|
t.index ["created_by_user_id"], name: "index_tag_description_versions_on_created_by_user_id"
|
||||||
|
t.index ["event_id"], name: "index_tag_description_versions_on_event_id"
|
||||||
t.index ["tag_id", "language_code", "version_no"], name: "idx_on_tag_id_language_code_version_no_ced77e57e6", unique: true
|
t.index ["tag_id", "language_code", "version_no"], name: "idx_on_tag_id_language_code_version_no_ced77e57e6", unique: true
|
||||||
t.index ["tag_id", "source_language_code", "source_version_no"], name: "fk_rails_4f13094dbc"
|
t.index ["tag_id", "source_language_code", "source_version_no"], name: "fk_rails_4f13094dbc"
|
||||||
t.index ["tag_id"], name: "index_tag_description_versions_on_tag_id"
|
t.index ["tag_id"], name: "index_tag_description_versions_on_tag_id"
|
||||||
@@ -533,9 +554,11 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.text "description"
|
t.text "description"
|
||||||
t.json "members", null: false
|
t.json "members", null: false
|
||||||
t.json "placements", null: false
|
t.json "placements", null: false
|
||||||
|
t.bigint "event_id", null: false
|
||||||
t.bigint "created_by_user_id"
|
t.bigint "created_by_user_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.index ["created_by_user_id"], name: "index_tag_group_versions_on_created_by_user_id"
|
t.index ["created_by_user_id"], name: "index_tag_group_versions_on_created_by_user_id"
|
||||||
|
t.index ["event_id"], name: "index_tag_group_versions_on_event_id"
|
||||||
t.index ["tag_group_id", "version_no"], name: "index_tag_group_versions_on_tag_group_id_and_version_no", unique: true
|
t.index ["tag_group_id", "version_no"], name: "index_tag_group_versions_on_tag_group_id_and_version_no", unique: true
|
||||||
t.index ["tag_group_id"], name: "index_tag_group_versions_on_tag_group_id"
|
t.index ["tag_group_id"], name: "index_tag_group_versions_on_tag_group_id"
|
||||||
t.check_constraint "`version_no` > 0", name: "chk_tag_group_versions_version_no_positive"
|
t.check_constraint "`version_no` > 0", name: "chk_tag_group_versions_version_no_positive"
|
||||||
@@ -611,11 +634,13 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
t.text "aliases", null: false
|
t.text "aliases", null: false
|
||||||
t.text "parent_tag_ids", null: false
|
t.text "parent_tag_ids", null: false
|
||||||
t.datetime "deprecated_at"
|
t.datetime "deprecated_at"
|
||||||
|
t.bigint "event_id", null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.bigint "created_by_user_id"
|
t.bigint "created_by_user_id"
|
||||||
t.json "names", null: false
|
t.json "names", null: false
|
||||||
t.index ["created_at"], name: "index_tag_versions_on_created_at"
|
t.index ["created_at"], name: "index_tag_versions_on_created_at"
|
||||||
t.index ["created_by_user_id", "created_at"], name: "index_tag_versions_on_created_by_user_id_and_created_at", order: { created_at: :desc }
|
t.index ["created_by_user_id", "created_at"], name: "index_tag_versions_on_created_by_user_id_and_created_at", order: { created_at: :desc }
|
||||||
|
t.index ["event_id"], name: "index_tag_versions_on_event_id"
|
||||||
t.index ["tag_id", "created_at"], name: "index_tag_versions_on_tag_id_and_created_at", order: { created_at: :desc }
|
t.index ["tag_id", "created_at"], name: "index_tag_versions_on_tag_id_and_created_at", order: { created_at: :desc }
|
||||||
t.index ["tag_id", "version_no"], name: "index_tag_versions_on_tag_id_and_version_no", unique: true
|
t.index ["tag_id", "version_no"], name: "index_tag_versions_on_tag_id_and_version_no", unique: true
|
||||||
t.check_constraint "`version_no` > 0", name: "tag_versions_version_no_positive"
|
t.check_constraint "`version_no` > 0", name: "tag_versions_version_no_positive"
|
||||||
@@ -771,6 +796,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
|
|
||||||
add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id"
|
add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id"
|
||||||
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
||||||
|
add_foreign_key "events", "events", column: "reverted_from_event_id"
|
||||||
add_foreign_key "gekanator_ai_runs", "gekanator_question_suggestions"
|
add_foreign_key "gekanator_ai_runs", "gekanator_question_suggestions"
|
||||||
add_foreign_key "gekanator_games", "posts", column: "correct_post_id"
|
add_foreign_key "gekanator_games", "posts", column: "correct_post_id"
|
||||||
add_foreign_key "gekanator_games", "posts", column: "guessed_post_id"
|
add_foreign_key "gekanator_games", "posts", column: "guessed_post_id"
|
||||||
@@ -792,6 +818,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
add_foreign_key "material_sync_sources", "users", column: "created_by_user_id"
|
add_foreign_key "material_sync_sources", "users", column: "created_by_user_id"
|
||||||
add_foreign_key "material_sync_sources", "users", column: "updated_by_user_id"
|
add_foreign_key "material_sync_sources", "users", column: "updated_by_user_id"
|
||||||
add_foreign_key "material_sync_suppressions", "users", column: "created_by_user_id"
|
add_foreign_key "material_sync_suppressions", "users", column: "created_by_user_id"
|
||||||
|
add_foreign_key "material_versions", "events"
|
||||||
add_foreign_key "material_versions", "materials"
|
add_foreign_key "material_versions", "materials"
|
||||||
add_foreign_key "material_versions", "materials", column: "parent_id"
|
add_foreign_key "material_versions", "materials", column: "parent_id"
|
||||||
add_foreign_key "material_versions", "users", column: "created_by_user_id"
|
add_foreign_key "material_versions", "users", column: "created_by_user_id"
|
||||||
@@ -813,10 +840,12 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
add_foreign_key "post_tags", "posts"
|
add_foreign_key "post_tags", "posts"
|
||||||
add_foreign_key "post_tags", "tags"
|
add_foreign_key "post_tags", "tags"
|
||||||
add_foreign_key "post_tags", "users", column: "created_user_id"
|
add_foreign_key "post_tags", "users", column: "created_user_id"
|
||||||
|
add_foreign_key "post_versions", "events"
|
||||||
add_foreign_key "post_versions", "posts"
|
add_foreign_key "post_versions", "posts"
|
||||||
add_foreign_key "post_versions", "users", column: "created_by_user_id"
|
add_foreign_key "post_versions", "users", column: "created_by_user_id"
|
||||||
add_foreign_key "posts", "users", column: "uploaded_user_id"
|
add_foreign_key "posts", "users", column: "uploaded_user_id"
|
||||||
add_foreign_key "settings", "users"
|
add_foreign_key "settings", "users"
|
||||||
|
add_foreign_key "tag_description_versions", "events"
|
||||||
add_foreign_key "tag_description_versions", "tag_description_versions", column: ["tag_id", "source_language_code", "source_version_no"], primary_key: ["tag_id", "language_code", "version_no"]
|
add_foreign_key "tag_description_versions", "tag_description_versions", column: ["tag_id", "source_language_code", "source_version_no"], primary_key: ["tag_id", "language_code", "version_no"]
|
||||||
add_foreign_key "tag_descriptions", "languages", column: "language_code", primary_key: "code"
|
add_foreign_key "tag_descriptions", "languages", column: "language_code", primary_key: "code"
|
||||||
add_foreign_key "tag_descriptions", "tag_description_versions", column: ["tag_id", "source_language_code", "source_version_no"], primary_key: ["tag_id", "language_code", "version_no"]
|
add_foreign_key "tag_descriptions", "tag_description_versions", column: ["tag_id", "source_language_code", "source_version_no"], primary_key: ["tag_id", "language_code", "version_no"]
|
||||||
@@ -835,6 +864,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
add_foreign_key "tag_group_tags", "tag_groups"
|
add_foreign_key "tag_group_tags", "tag_groups"
|
||||||
add_foreign_key "tag_group_tags", "tags"
|
add_foreign_key "tag_group_tags", "tags"
|
||||||
add_foreign_key "tag_group_tags", "users", column: "created_by_user_id"
|
add_foreign_key "tag_group_tags", "users", column: "created_by_user_id"
|
||||||
|
add_foreign_key "tag_group_versions", "events"
|
||||||
add_foreign_key "tag_groups", "users", column: "created_by_user_id"
|
add_foreign_key "tag_groups", "users", column: "created_by_user_id"
|
||||||
add_foreign_key "tag_groups", "users", column: "updated_by_user_id"
|
add_foreign_key "tag_groups", "users", column: "updated_by_user_id"
|
||||||
add_foreign_key "tag_implications", "tags"
|
add_foreign_key "tag_implications", "tags"
|
||||||
@@ -844,6 +874,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_10_15_010000) do
|
|||||||
add_foreign_key "tag_names", "tags"
|
add_foreign_key "tag_names", "tags"
|
||||||
add_foreign_key "tag_similarities", "tags"
|
add_foreign_key "tag_similarities", "tags"
|
||||||
add_foreign_key "tag_similarities", "tags", column: "target_tag_id"
|
add_foreign_key "tag_similarities", "tags", column: "target_tag_id"
|
||||||
|
add_foreign_key "tag_versions", "events"
|
||||||
add_foreign_key "tag_versions", "users", column: "created_by_user_id"
|
add_foreign_key "tag_versions", "users", column: "created_by_user_id"
|
||||||
add_foreign_key "theatre_comments", "theatres"
|
add_foreign_key "theatre_comments", "theatres"
|
||||||
add_foreign_key "theatre_comments", "users"
|
add_foreign_key "theatre_comments", "users"
|
||||||
|
|||||||
新しいイシューから参照
ユーザーをブロックする