diff --git a/backend/app/controllers/posts_controller.rb b/backend/app/controllers/posts_controller.rb index b609204..09c61b7 100644 --- a/backend/app/controllers/posts_controller.rb +++ b/backend/app/controllers/posts_controller.rb @@ -111,7 +111,8 @@ class PostsController < ApplicationController original_created_before = params[:original_created_before] post = Post.find(params[:id].to_i) - tags = post.tags.where(category: 'nico').to_a + Tag.normalise_tags(tag_names) + tags = post.tags.where(category: 'nico').to_a + + Tag.normalise_tags(tag_names, with_tagme: false) tags = Tag.expand_parent_tags(tags) if post.update(title:, tags:, original_created_from:, original_created_before:) render json: post.as_json(include: { tags: { only: [:id, :name, :category, :post_count] } }), diff --git a/backend/app/controllers/users_controller.rb b/backend/app/controllers/users_controller.rb index 8658a5f..4ee4836 100644 --- a/backend/app/controllers/users_controller.rb +++ b/backend/app/controllers/users_controller.rb @@ -6,12 +6,15 @@ class UsersController < ApplicationController end def verify + ip_bin = IPAddr.new(request.remote_ip).hton + ip_address = IpAddress.find_or_create_by!(ip_address: ip_bin) + user = User.find_by(inheritance_code: params[:code]) - render json: if user - { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) } - else - { valid: false } - end + return render json: { valid: false } unless user + + UserIp.find_or_create_by!(user:, ip_address:) + + render json: { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) } end def renew diff --git a/backend/app/models/tag.rb b/backend/app/models/tag.rb index a9dae71..8a505e2 100644 --- a/backend/app/models/tag.rb +++ b/backend/app/models/tag.rb @@ -65,7 +65,7 @@ class Tag < ApplicationRecord end end end - tags << Tag.tagme if with_tagme && tags.size < 20 && tags.none?(Tag.tagme) + tags << Tag.tagme if with_tagme && tags.size < 10 && tags.none?(Tag.tagme) tags.uniq end diff --git a/backend/app/models/user.rb b/backend/app/models/user.rb index 830d383..ede464a 100644 --- a/backend/app/models/user.rb +++ b/backend/app/models/user.rb @@ -8,7 +8,6 @@ class User < ApplicationRecord has_many :posts has_many :settings - has_many :ip_addresses has_many :user_ips, dependent: :destroy has_many :ip_addresses, through: :user_ips has_many :user_post_views, dependent: :destroy diff --git a/backend/db/migrate/20251126231500_rename_ip_adress_column_to_ip_addresses.rb b/backend/db/migrate/20251126231500_rename_ip_adress_column_to_ip_addresses.rb new file mode 100644 index 0000000..60f78e6 --- /dev/null +++ b/backend/db/migrate/20251126231500_rename_ip_adress_column_to_ip_addresses.rb @@ -0,0 +1,5 @@ +class RenameIpAdressColumnToIpAddresses < ActiveRecord::Migration[8.0] + def change + rename_column :ip_addresses, :ip_adress, :ip_address + end +end diff --git a/backend/db/schema.rb b/backend/db/schema.rb index c747977..19ec4f6 100644 --- a/backend/db/schema.rb +++ b/backend/db/schema.rb @@ -40,7 +40,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_10_09_222200) do end create_table "ip_addresses", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t| - t.binary "ip_adress", limit: 16, null: false + t.binary "ip_address", limit: 16, null: false t.boolean "banned", default: false, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -70,9 +70,16 @@ ActiveRecord::Schema[8.0].define(version: 2025_10_09_222200) do t.bigint "deleted_user_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.datetime "discarded_at" + t.virtual "is_active", type: :boolean, as: "(`discarded_at` is null)", stored: true + t.virtual "active_unique_key", type: :string, as: "(case when (`discarded_at` is null) then concat(`post_id`,_utf8mb4':',`tag_id`) else NULL end)", stored: true + t.index ["active_unique_key"], name: "idx_post_tags_active_unique", unique: true t.index ["created_user_id"], name: "index_post_tags_on_created_user_id" t.index ["deleted_user_id"], name: "index_post_tags_on_deleted_user_id" + t.index ["discarded_at"], name: "index_post_tags_on_discarded_at" + t.index ["post_id", "discarded_at"], name: "index_post_tags_on_post_id_and_discarded_at" t.index ["post_id"], name: "index_post_tags_on_post_id" + t.index ["tag_id", "discarded_at"], name: "index_post_tags_on_tag_id_and_discarded_at" t.index ["tag_id"], name: "index_post_tags_on_tag_id" end diff --git a/backend/lib/tasks/link_nico.rake b/backend/lib/tasks/link_nico.rake deleted file mode 100644 index 0c02f48..0000000 --- a/backend/lib/tasks/link_nico.rake +++ /dev/null @@ -1,12 +0,0 @@ -namespace :nico do - desc 'ニコタグ連携' - task link: :environment do - Post.find_each do |post| - tags = post.tags.where(category: 'nico') - tags.each do |tag| - post.tags.concat(tag.linked_tags) if tag.linked_tags.present? - end - post.tags = post.tags.to_a.uniq - end - end -end diff --git a/backend/lib/tasks/sync_nico.rake b/backend/lib/tasks/sync_nico.rake index a8601c5..9fe28fb 100644 --- a/backend/lib/tasks/sync_nico.rake +++ b/backend/lib/tasks/sync_nico.rake @@ -51,7 +51,7 @@ namespace :nico do end tags_to_add.concat([tag] + tag.linked_tags) end - tags_to_add << Tag.tagme if post.tags.size < 20 + tags_to_add << Tag.tagme if post.tags.size < 10 tags_to_add << Tag.bot post.tags = (post.tags + tags_to_add).uniq end