Use symbols for foreign_key association declarations

This commit is contained in:
Matt Jankowski 2025-08-15 09:54:43 -04:00
parent f65e582da5
commit 7eeee78c96
8 changed files with 18 additions and 18 deletions

View File

@ -10,7 +10,7 @@ module ApplicationExtension
included do included do
include Redisable include Redisable
has_many :created_users, class_name: 'User', foreign_key: 'created_by_application_id', inverse_of: :created_by_application has_many :created_users, class_name: 'User', foreign_key: :created_by_application_id, inverse_of: :created_by_application
validates :name, length: { maximum: APP_NAME_LIMIT } validates :name, length: { maximum: APP_NAME_LIMIT }
validates :redirect_uri, length: { maximum: APP_REDIRECT_URI_LIMIT } validates :redirect_uri, length: { maximum: APP_REDIRECT_URI_LIMIT }

View File

@ -19,7 +19,7 @@ class Appeal < ApplicationRecord
TEXT_LENGTH_LIMIT = 2_000 TEXT_LENGTH_LIMIT = 2_000
belongs_to :account belongs_to :account
belongs_to :strike, class_name: 'AccountWarning', foreign_key: 'account_warning_id', inverse_of: :appeal belongs_to :strike, class_name: 'AccountWarning', foreign_key: :account_warning_id, inverse_of: :appeal
with_options class_name: 'Account', optional: true do with_options class_name: 'Account', optional: true do
belongs_to :approved_by_account belongs_to :approved_by_account

View File

@ -8,16 +8,16 @@ module Account::Interactions
has_many :follow_requests, dependent: :destroy has_many :follow_requests, dependent: :destroy
with_options class_name: 'Follow', dependent: :destroy do with_options class_name: 'Follow', dependent: :destroy do
has_many :active_relationships, foreign_key: 'account_id', inverse_of: :account has_many :active_relationships, foreign_key: :account_id, inverse_of: :account
has_many :passive_relationships, foreign_key: 'target_account_id', inverse_of: :target_account has_many :passive_relationships, foreign_key: :target_account_id, inverse_of: :target_account
end end
has_many :following, -> { order(follows: { id: :desc }) }, through: :active_relationships, source: :target_account has_many :following, -> { order(follows: { id: :desc }) }, through: :active_relationships, source: :target_account
has_many :followers, -> { order(follows: { id: :desc }) }, through: :passive_relationships, source: :account has_many :followers, -> { order(follows: { id: :desc }) }, through: :passive_relationships, source: :account
with_options class_name: 'SeveredRelationship', dependent: :destroy do with_options class_name: 'SeveredRelationship', dependent: :destroy do
has_many :severed_relationships, foreign_key: 'local_account_id', inverse_of: :local_account has_many :severed_relationships, foreign_key: :local_account_id, inverse_of: :local_account
has_many :remote_severed_relationships, foreign_key: 'remote_account_id', inverse_of: :remote_account has_many :remote_severed_relationships, foreign_key: :remote_account_id, inverse_of: :remote_account
end end
# Hashtag follows # Hashtag follows
@ -28,7 +28,7 @@ module Account::Interactions
# Block relationships # Block relationships
with_options class_name: 'Block', dependent: :destroy do with_options class_name: 'Block', dependent: :destroy do
has_many :block_relationships, foreign_key: 'account_id', inverse_of: :account has_many :block_relationships, foreign_key: :account_id, inverse_of: :account
has_many :blocked_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account has_many :blocked_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
end end
has_many :blocking, -> { order(blocks: { id: :desc }) }, through: :block_relationships, source: :target_account has_many :blocking, -> { order(blocks: { id: :desc }) }, through: :block_relationships, source: :target_account
@ -36,7 +36,7 @@ module Account::Interactions
# Mute relationships # Mute relationships
with_options class_name: 'Mute', dependent: :destroy do with_options class_name: 'Mute', dependent: :destroy do
has_many :mute_relationships, foreign_key: 'account_id', inverse_of: :account has_many :mute_relationships, foreign_key: :account_id, inverse_of: :account
has_many :muted_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account has_many :muted_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
end end
has_many :muting, -> { order(mutes: { id: :desc }) }, through: :mute_relationships, source: :target_account has_many :muting, -> { order(mutes: { id: :desc }) }, through: :mute_relationships, source: :target_account

View File

@ -11,7 +11,7 @@
# #
class CustomEmojiCategory < ApplicationRecord class CustomEmojiCategory < ApplicationRecord
has_many :emojis, class_name: 'CustomEmoji', foreign_key: 'category_id', inverse_of: :category, dependent: nil has_many :emojis, class_name: 'CustomEmoji', foreign_key: :category_id, inverse_of: :category, dependent: nil
validates :name, presence: true, uniqueness: true validates :name, presence: true, uniqueness: true

View File

@ -100,7 +100,7 @@ class Notification < ApplicationRecord
belongs_to :from_account, class_name: 'Account', optional: true belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true belongs_to :activity, polymorphic: true, optional: true
with_options foreign_key: 'activity_id', optional: true do with_options foreign_key: :activity_id, optional: true do
belongs_to :mention, inverse_of: :notification belongs_to :mention, inverse_of: :notification
belongs_to :status, inverse_of: :notification belongs_to :status, inverse_of: :notification
belongs_to :follow, inverse_of: :notification belongs_to :follow, inverse_of: :notification

View File

@ -63,22 +63,22 @@ class Status < ApplicationRecord
belongs_to :account, inverse_of: :statuses belongs_to :account, inverse_of: :statuses
belongs_to :in_reply_to_account, class_name: 'Account', optional: true belongs_to :in_reply_to_account, class_name: 'Account', optional: true
belongs_to :conversation, optional: true belongs_to :conversation, optional: true
belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true, inverse_of: false belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: :poll_id, optional: true, inverse_of: false
with_options class_name: 'Status', optional: true do with_options class_name: 'Status', optional: true do
belongs_to :thread, foreign_key: 'in_reply_to_id', inverse_of: :replies belongs_to :thread, foreign_key: :in_reply_to_id, inverse_of: :replies
belongs_to :reblog, foreign_key: 'reblog_of_id', inverse_of: :reblogs belongs_to :reblog, foreign_key: :reblog_of_id, inverse_of: :reblogs
end end
has_many :favourites, inverse_of: :status, dependent: :destroy has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :bookmarks, inverse_of: :status, dependent: :destroy has_many :bookmarks, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy has_many :reblogs, foreign_key: :reblog_of_id, class_name: 'Status', inverse_of: :reblog, dependent: :destroy
has_many :reblogged_by_accounts, through: :reblogs, class_name: 'Account', source: :account has_many :reblogged_by_accounts, through: :reblogs, class_name: 'Account', source: :account
has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread, dependent: nil has_many :replies, foreign_key: :in_reply_to_id, class_name: 'Status', inverse_of: :thread, dependent: nil
has_many :mentions, dependent: :destroy, inverse_of: :status has_many :mentions, dependent: :destroy, inverse_of: :status
has_many :mentioned_accounts, through: :mentions, source: :account, class_name: 'Account' has_many :mentioned_accounts, through: :mentions, source: :account, class_name: 'Account'
has_many :media_attachments, dependent: :nullify has_many :media_attachments, dependent: :nullify
has_many :quotes, foreign_key: 'quoted_status_id', inverse_of: :quoted_status, dependent: :nullify has_many :quotes, foreign_key: :quoted_status_id, inverse_of: :quoted_status, dependent: :nullify
# The `dependent` option is enabled by the initial `mentions` association declaration # The `dependent` option is enabled by the initial `mentions` association declaration
has_many :active_mentions, -> { active }, class_name: 'Mention', inverse_of: :status # rubocop:disable Rails/HasManyOrHasOneDependent has_many :active_mentions, -> { active }, class_name: 'Mention', inverse_of: :status # rubocop:disable Rails/HasManyOrHasOneDependent

View File

@ -103,7 +103,7 @@ class UserRole < ApplicationRecord
scope :assignable, -> { where.not(id: EVERYONE_ROLE_ID).order(position: :asc) } scope :assignable, -> { where.not(id: EVERYONE_ROLE_ID).order(position: :asc) }
has_many :users, inverse_of: :role, foreign_key: 'role_id', dependent: :nullify has_many :users, inverse_of: :role, foreign_key: :role_id, dependent: :nullify
def self.nobody def self.nobody
@nobody ||= UserRole.new(permissions: Flags::NONE, position: NOBODY_POSITION) @nobody ||= UserRole.new(permissions: Flags::NONE, position: NOBODY_POSITION)

View File

@ -20,7 +20,7 @@ class Web::PushSubscription < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :access_token, class_name: 'Doorkeeper::AccessToken' belongs_to :access_token, class_name: 'Doorkeeper::AccessToken'
has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription, dependent: nil has_one :session_activation, foreign_key: :web_push_subscription_id, inverse_of: :web_push_subscription, dependent: nil
validates :endpoint, presence: true, url: true validates :endpoint, presence: true, url: true
validates :key_p256dh, presence: true validates :key_p256dh, presence: true