Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ab249c46c | |||
| fcd3b87b2a |
@@ -336,8 +336,27 @@ class TagsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update_aliases! tag, alias_names
|
def update_aliases! tag, alias_names
|
||||||
|
alias_names = alias_names.uniq
|
||||||
|
|
||||||
|
affected_tags = [tag]
|
||||||
|
|
||||||
current_aliases = tag.tag_name.aliases.to_a
|
current_aliases = tag.tag_name.aliases.to_a
|
||||||
|
|
||||||
|
current_aliases.each do |alias_tag_name|
|
||||||
|
next if alias_names.include?(alias_tag_name.name)
|
||||||
|
|
||||||
|
affected_tags << alias_tag_name.canonical&.tag
|
||||||
|
end
|
||||||
|
|
||||||
|
alias_names.each do |alias_name|
|
||||||
|
alias_tag_name = TagName.find_undiscard_or_create_by!(name: alias_name)
|
||||||
|
affected_tags << alias_tag_name.canonical&.tag
|
||||||
|
end
|
||||||
|
|
||||||
|
affected_tags.compact.uniq.each do |affected_tag|
|
||||||
|
TagVersioning.ensure_snapshot!(affected_tag, created_by_user: current_user)
|
||||||
|
end
|
||||||
|
|
||||||
current_aliases.each do |alias_tag_name|
|
current_aliases.each do |alias_tag_name|
|
||||||
next if alias_names.include?(alias_tag_name.name)
|
next if alias_names.include?(alias_tag_name.name)
|
||||||
|
|
||||||
@@ -348,6 +367,10 @@ class TagsController < ApplicationController
|
|||||||
alias_tag_name = TagName.find_undiscard_or_create_by!(name: alias_name)
|
alias_tag_name = TagName.find_undiscard_or_create_by!(name: alias_name)
|
||||||
alias_tag_name.update!(canonical: tag.tag_name)
|
alias_tag_name.update!(canonical: tag.tag_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
affected_tags.compact.uniq.each do |affected_tag|
|
||||||
|
record_tag_version!(affected_tag, event_type: :update, created_by_user: current_user)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_parent_tags! tag, parent_names
|
def update_parent_tags! tag, parent_names
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
class RenameBannedToBannedAtInUsersAndIpAddresses < ActiveRecord::Migration[8.0]
|
||||||
|
def up
|
||||||
|
[:users, :ip_addresses].each do
|
||||||
|
add_column _1, :banned_at, :datetime, after: :banned
|
||||||
|
add_index _1, :banned_at
|
||||||
|
remove_column _1, :banned
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
[:ip_addresses, :users].each do
|
||||||
|
add_column _1, :banned, :boolean, null: false, default: false, after: :banned_at
|
||||||
|
remove_column _1, :banned_at
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Generated
+17
-9
@@ -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_04_26_120600) do
|
ActiveRecord::Schema[8.0].define(version: 2026_05_01_153900) 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
|
||||||
@@ -50,9 +50,10 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
|
|
||||||
create_table "ip_addresses", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
create_table "ip_addresses", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
t.binary "ip_address", limit: 16, null: false
|
t.binary "ip_address", limit: 16, null: false
|
||||||
t.boolean "banned", default: false, null: false
|
t.datetime "banned_at"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["banned_at"], name: "index_ip_addresses_on_banned_at"
|
||||||
t.index ["ip_address"], name: "index_ip_addresses_on_ip_address", unique: true
|
t.index ["ip_address"], name: "index_ip_addresses_on_ip_address", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -119,6 +120,15 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
t.check_constraint "`version_no` > 0", name: "nico_tag_versions_version_no_positive"
|
t.check_constraint "`version_no` > 0", name: "nico_tag_versions_version_no_positive"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "post_implications", primary_key: ["post_id", "parent_post_id"], charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
|
t.bigint "post_id", null: false
|
||||||
|
t.bigint "parent_post_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["parent_post_id"], name: "index_post_implications_on_parent_post_id"
|
||||||
|
t.check_constraint "`post_id` <> `parent_post_id`", name: "chk_post_implications_no_self"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "post_similarities", primary_key: ["post_id", "target_post_id"], charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
create_table "post_similarities", primary_key: ["post_id", "target_post_id"], charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
t.bigint "post_id", null: false
|
t.bigint "post_id", null: false
|
||||||
t.bigint "target_post_id", null: false
|
t.bigint "target_post_id", null: false
|
||||||
@@ -155,13 +165,12 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
t.string "url", limit: 768, null: false
|
t.string "url", limit: 768, null: false
|
||||||
t.string "thumbnail_base", limit: 2000
|
t.string "thumbnail_base", limit: 2000
|
||||||
t.text "tags", null: false
|
t.text "tags", null: false
|
||||||
t.bigint "parent_id"
|
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.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.bigint "created_by_user_id"
|
t.bigint "created_by_user_id"
|
||||||
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 ["parent_id"], name: "index_post_versions_on_parent_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.check_constraint "`event_type` in (_utf8mb4'create',_utf8mb4'update',_utf8mb4'discard',_utf8mb4'restore')", name: "post_versions_event_type_valid"
|
t.check_constraint "`event_type` in (_utf8mb4'create',_utf8mb4'update',_utf8mb4'discard',_utf8mb4'restore')", name: "post_versions_event_type_valid"
|
||||||
@@ -172,13 +181,11 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
t.string "title"
|
t.string "title"
|
||||||
t.string "url", limit: 768, null: false
|
t.string "url", limit: 768, null: false
|
||||||
t.string "thumbnail_base", limit: 2000
|
t.string "thumbnail_base", limit: 2000
|
||||||
t.bigint "parent_id"
|
|
||||||
t.bigint "uploaded_user_id"
|
t.bigint "uploaded_user_id"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "original_created_from"
|
t.datetime "original_created_from"
|
||||||
t.datetime "original_created_before"
|
t.datetime "original_created_before"
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["parent_id"], name: "index_posts_on_parent_id"
|
|
||||||
t.index ["uploaded_user_id"], name: "index_posts_on_uploaded_user_id"
|
t.index ["uploaded_user_id"], name: "index_posts_on_uploaded_user_id"
|
||||||
t.index ["url"], name: "index_posts_on_url", unique: true
|
t.index ["url"], name: "index_posts_on_url", unique: true
|
||||||
end
|
end
|
||||||
@@ -326,9 +333,10 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "inheritance_code", limit: 64, null: false
|
t.string "inheritance_code", limit: 64, null: false
|
||||||
t.string "role", null: false
|
t.string "role", null: false
|
||||||
t.boolean "banned", default: false, null: false
|
t.datetime "banned_at"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["banned_at"], name: "index_users_on_banned_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "wiki_assets", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
create_table "wiki_assets", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||||
@@ -428,6 +436,8 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
add_foreign_key "nico_tag_relations", "tags", column: "nico_tag_id"
|
add_foreign_key "nico_tag_relations", "tags", column: "nico_tag_id"
|
||||||
add_foreign_key "nico_tag_versions", "tags"
|
add_foreign_key "nico_tag_versions", "tags"
|
||||||
add_foreign_key "nico_tag_versions", "users", column: "created_by_user_id"
|
add_foreign_key "nico_tag_versions", "users", column: "created_by_user_id"
|
||||||
|
add_foreign_key "post_implications", "posts"
|
||||||
|
add_foreign_key "post_implications", "posts", column: "parent_post_id"
|
||||||
add_foreign_key "post_similarities", "posts"
|
add_foreign_key "post_similarities", "posts"
|
||||||
add_foreign_key "post_similarities", "posts", column: "target_post_id"
|
add_foreign_key "post_similarities", "posts", column: "target_post_id"
|
||||||
add_foreign_key "post_tags", "posts"
|
add_foreign_key "post_tags", "posts"
|
||||||
@@ -435,9 +445,7 @@ ActiveRecord::Schema[8.0].define(version: 2026_04_26_120600) do
|
|||||||
add_foreign_key "post_tags", "users", column: "created_user_id"
|
add_foreign_key "post_tags", "users", column: "created_user_id"
|
||||||
add_foreign_key "post_tags", "users", column: "deleted_user_id"
|
add_foreign_key "post_tags", "users", column: "deleted_user_id"
|
||||||
add_foreign_key "post_versions", "posts"
|
add_foreign_key "post_versions", "posts"
|
||||||
add_foreign_key "post_versions", "posts", column: "parent_id"
|
|
||||||
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", "posts", column: "parent_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_implications", "tags"
|
add_foreign_key "tag_implications", "tags"
|
||||||
|
|||||||
@@ -964,8 +964,6 @@ RSpec.describe 'Tags API', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it '別名を他 tag から奪った場合、奪はれた側の tag version も作成する' do
|
it '別名を他 tag から奪った場合、奪はれた側の tag version も作成する' do
|
||||||
pending '#329 で対応予定'
|
|
||||||
|
|
||||||
old_owner = Tag.create!(
|
old_owner = Tag.create!(
|
||||||
tag_name: TagName.create!(name: 'put_alias_old_owner'),
|
tag_name: TagName.create!(name: 'put_alias_old_owner'),
|
||||||
category: :general
|
category: :general
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ RSpec.describe 'Wiki body search', type: :request do
|
|||||||
let!(:user) { create_member_user! }
|
let!(:user) { create_member_user! }
|
||||||
|
|
||||||
it 'searches wiki pages by body text' do
|
it 'searches wiki pages by body text' do
|
||||||
pending 'Wiki 本文検索実装時に有効化する'
|
pending '#336 で対応予定'
|
||||||
|
|
||||||
Wiki::Commit.create_content!(
|
Wiki::Commit.create_content!(
|
||||||
tag_name: TagName.create!(name: 'wiki_body_search_hit'),
|
tag_name: TagName.create!(name: 'wiki_body_search_hit'),
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ RSpec.describe 'Wiki restore', type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'restores wiki page to previous version' do
|
it 'restores wiki page to previous version' do
|
||||||
pending 'Wiki 版巻き戻し API 実装時に有効化する'
|
pending '#337 で対応予定'
|
||||||
|
|
||||||
page =
|
page =
|
||||||
Wiki::Commit.create_content!(
|
Wiki::Commit.create_content!(
|
||||||
|
|||||||
Reference in New Issue
Block a user