mirror of
https://github.com/Retrospring/retrospring.git
synced 2024-11-20 12:39:53 +01:00
Add target user to reports
This commit is contained in:
parent
6e370608b3
commit
ab442db40b
3 changed files with 46 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
|||
class Report < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :target_user, class_name: "User", optional: true
|
||||
validates :type, presence: true
|
||||
validates :target_id, presence: true
|
||||
validates :user_id, presence: true
|
||||
|
|
39
db/migrate/20240123182422_add_target_user_to_reports.rb
Normal file
39
db/migrate/20240123182422_add_target_user_to_reports.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddTargetUserToReports < ActiveRecord::Migration[7.0]
|
||||
def up
|
||||
add_reference :reports, :target_user, null: true, foreign_key: false
|
||||
|
||||
execute <<~SQL.squish
|
||||
UPDATE reports
|
||||
SET target_user_id = users.id
|
||||
FROM users
|
||||
WHERE users.id = reports.target_id AND reports.type = 'Reports::User'
|
||||
SQL
|
||||
|
||||
execute <<~SQL.squish
|
||||
UPDATE reports
|
||||
SET target_user_id = users.id
|
||||
FROM users, comments
|
||||
WHERE users.id = comments.user_id AND comments.id = reports.target_id AND reports.type = 'Reports::Comment'
|
||||
SQL
|
||||
|
||||
execute <<~SQL.squish
|
||||
UPDATE reports
|
||||
SET target_user_id = users.id
|
||||
FROM users, answers
|
||||
WHERE users.id = answers.user_id AND answers.id = reports.target_id AND reports.type = 'Reports::Answer'
|
||||
SQL
|
||||
|
||||
execute <<~SQL.squish
|
||||
UPDATE reports
|
||||
SET target_user_id = users.id
|
||||
FROM users, questions
|
||||
WHERE users.id = questions.user_id AND questions.id = reports.target_id AND reports.type = 'Reports::Question'
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
remove_reference :reports, :target_user, null: true, foreign_key: { to_table: :users }
|
||||
end
|
||||
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.0].define(version: 2023_12_20_100445) do
|
||||
ActiveRecord::Schema[7.0].define(version: 2024_01_23_182422) do
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
|
@ -28,11 +28,11 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_20_100445) do
|
|||
end
|
||||
|
||||
create_table "anonymous_blocks", force: :cascade do |t|
|
||||
t.bigint "user_id"
|
||||
t.string "identifier"
|
||||
t.bigint "question_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.bigint "question_id"
|
||||
t.bigint "user_id"
|
||||
t.bigint "target_user_id"
|
||||
t.index ["identifier"], name: "index_anonymous_blocks_on_identifier"
|
||||
t.index ["question_id"], name: "index_anonymous_blocks_on_question_id"
|
||||
|
@ -95,10 +95,10 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_20_100445) do
|
|||
end
|
||||
|
||||
create_table "mute_rules", id: :bigint, default: -> { "gen_timestamp_id('mute_rules'::text)" }, force: :cascade do |t|
|
||||
t.bigint "user_id"
|
||||
t.string "muted_phrase"
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
t.datetime "updated_at", precision: nil, null: false
|
||||
t.bigint "user_id"
|
||||
t.index ["user_id"], name: "index_mute_rules_on_user_id"
|
||||
end
|
||||
|
||||
|
@ -173,6 +173,8 @@ ActiveRecord::Schema[7.0].define(version: 2023_12_20_100445) do
|
|||
t.datetime "updated_at", precision: nil
|
||||
t.boolean "deleted", default: false
|
||||
t.string "reason"
|
||||
t.bigint "target_user_id"
|
||||
t.index ["target_user_id"], name: "index_reports_on_target_user_id"
|
||||
t.index ["type", "target_id"], name: "index_reports_on_type_and_target_id"
|
||||
t.index ["user_id", "created_at"], name: "index_reports_on_user_id_and_created_at"
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue