diff --git a/app/controllers/api/v1/accounts/notes_controller.rb b/app/controllers/api/v1/accounts/notes_controller.rb index 6d115631a2..b9b58b23d4 100644 --- a/app/controllers/api/v1/accounts/notes_controller.rb +++ b/app/controllers/api/v1/accounts/notes_controller.rb @@ -9,9 +9,9 @@ class Api::V1::Accounts::NotesController < Api::BaseController def create if params[:comment].blank? - AccountNote.find_by(account: current_account, target_account: @account)&.destroy + current_account.account_notes.find_by(target_account: @account)&.destroy else - @note = AccountNote.find_or_initialize_by(account: current_account, target_account: @account) + @note = current_account.account_notes.find_or_initialize_by(target_account: @account) @note.comment = params[:comment] @note.save! if @note.changed? end diff --git a/app/models/account_note.rb b/app/models/account_note.rb index 317e6873fa..55073ec100 100644 --- a/app/models/account_note.rb +++ b/app/models/account_note.rb @@ -16,8 +16,8 @@ class AccountNote < ApplicationRecord COMMENT_SIZE_LIMIT = 2_000 - belongs_to :account - belongs_to :target_account, class_name: 'Account' + belongs_to :account, inverse_of: :account_notes + belongs_to :target_account, class_name: 'Account', inverse_of: :targeted_account_notes validates :account_id, uniqueness: { scope: :target_account_id } validates :comment, length: { maximum: COMMENT_SIZE_LIMIT } diff --git a/app/models/concerns/account/associations.rb b/app/models/concerns/account/associations.rb index cafb2d151c..babea983fe 100644 --- a/app/models/concerns/account/associations.rb +++ b/app/models/concerns/account/associations.rb @@ -9,6 +9,7 @@ module Account::Associations # Association where account owns record with_options inverse_of: :account do has_many :account_moderation_notes + has_many :account_notes has_many :account_pins has_many :account_warnings has_many :aliases, class_name: 'AccountAlias' @@ -42,6 +43,7 @@ module Account::Associations # Association where account is targeted by record with_options foreign_key: :target_account_id, inverse_of: :target_account do has_many :strikes, class_name: 'AccountWarning' + has_many :targeted_account_notes, class_name: 'AccountNote' has_many :targeted_moderation_notes, class_name: 'AccountModerationNote' has_many :targeted_reports, class_name: 'Report' end diff --git a/app/models/concerns/account/interactions.rb b/app/models/concerns/account/interactions.rb index 6f6b8c16d0..e7e7bfa17e 100644 --- a/app/models/concerns/account/interactions.rb +++ b/app/models/concerns/account/interactions.rb @@ -88,9 +88,6 @@ module Account::Interactions has_many :remote_severed_relationships, foreign_key: 'remote_account_id', inverse_of: :remote_account end - # Account notes - has_many :account_notes, dependent: :destroy - # Block relationships with_options class_name: 'Block', dependent: :destroy do has_many :block_relationships, foreign_key: 'account_id', inverse_of: :account diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb index a18f38556b..b013de2231 100644 --- a/app/workers/move_worker.rb +++ b/app/workers/move_worker.rb @@ -80,17 +80,17 @@ class MoveWorker end def copy_account_notes! - AccountNote.where(target_account: @source_account).find_each do |note| + @source_account.targeted_account_notes.find_each do |note| text = I18n.with_locale(note.account.user&.locale.presence || I18n.default_locale) do I18n.t('move_handler.copy_account_note_text', acct: @source_account.acct) end - new_note = AccountNote.find_by(account: note.account, target_account: @target_account) + new_note = note.account.account_notes.find_by(target_account: @target_account) if new_note.nil? begin - AccountNote.create!(account: note.account, target_account: @target_account, comment: [text, note.comment].join("\n")) + note.account.account_notes.create!(target_account: @target_account, comment: [text, note.comment].join("\n")) rescue ActiveRecord::RecordInvalid - AccountNote.create!(account: note.account, target_account: @target_account, comment: note.comment) + note.account.account_notes.create!(target_account: @target_account, comment: note.comment) end else new_note.update!(comment: [text, note.comment, "\n", new_note.comment].join("\n")) @@ -123,11 +123,11 @@ class MoveWorker end def add_account_note_if_needed!(account, id) - unless AccountNote.exists?(account: account, target_account: @target_account) + unless account.account_notes.exists?(target_account: @target_account) text = I18n.with_locale(account.user&.locale.presence || I18n.default_locale) do I18n.t(id, acct: @source_account.acct) end - AccountNote.create!(account: account, target_account: @target_account, comment: text) + account.account_notes.create!(target_account: @target_account, comment: text) end end end