Use with_options blocks in Associations concern (#32840)
		
	This commit is contained in:
		
					parent
					
						
							
								a1ac2a73ff
							
						
					
				
			
			
				commit
				
					
						1c6f53e70f
					
				
			
		
					 1 changed files with 47 additions and 54 deletions
				
			
		|  | @ -4,75 +4,68 @@ module Account::Associations | |||
|   extend ActiveSupport::Concern | ||||
| 
 | ||||
|   included do | ||||
|     # Local users | ||||
|     has_one :user, inverse_of: :account, dependent: :destroy | ||||
|     # Core associations | ||||
|     with_options dependent: :destroy do | ||||
|       # Association where account owns record | ||||
|       with_options inverse_of: :account do | ||||
|         has_many :account_moderation_notes | ||||
|         has_many :account_pins | ||||
|         has_many :account_warnings | ||||
|         has_many :aliases, class_name: 'AccountAlias' | ||||
|         has_many :bookmarks | ||||
|         has_many :conversations, class_name: 'AccountConversation' | ||||
|         has_many :custom_filters | ||||
|         has_many :favourites | ||||
|         has_many :featured_tags, -> { includes(:tag) } | ||||
|         has_many :list_accounts | ||||
|         has_many :media_attachments | ||||
|         has_many :mentions | ||||
|         has_many :migrations, class_name: 'AccountMigration' | ||||
|         has_many :notification_permissions | ||||
|         has_many :notification_requests | ||||
|         has_many :notifications | ||||
|         has_many :owned_lists, class_name: 'List' | ||||
|         has_many :polls | ||||
|         has_many :report_notes | ||||
|         has_many :reports | ||||
|         has_many :scheduled_statuses | ||||
|         has_many :status_pins | ||||
|         has_many :statuses | ||||
| 
 | ||||
|     # Timelines | ||||
|     has_many :statuses, inverse_of: :account, dependent: :destroy | ||||
|     has_many :favourites, inverse_of: :account, dependent: :destroy | ||||
|     has_many :bookmarks, inverse_of: :account, dependent: :destroy | ||||
|     has_many :mentions, inverse_of: :account, dependent: :destroy | ||||
|     has_many :conversations, class_name: 'AccountConversation', dependent: :destroy, inverse_of: :account | ||||
|     has_many :scheduled_statuses, inverse_of: :account, dependent: :destroy | ||||
|         has_one :deletion_request, class_name: 'AccountDeletionRequest' | ||||
|         has_one :follow_recommendation_suppression | ||||
|         has_one :notification_policy | ||||
|         has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy' | ||||
|         has_one :user | ||||
|       end | ||||
| 
 | ||||
|     # Notifications | ||||
|     has_many :notifications, inverse_of: :account, dependent: :destroy | ||||
|     has_one :notification_policy, inverse_of: :account, dependent: :destroy | ||||
|     has_many :notification_permissions, inverse_of: :account, dependent: :destroy | ||||
|     has_many :notification_requests, inverse_of: :account, dependent: :destroy | ||||
|       # 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_moderation_notes, class_name: 'AccountModerationNote' | ||||
|         has_many :targeted_reports, class_name: 'Report' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     # Pinned statuses | ||||
|     has_many :status_pins, inverse_of: :account, dependent: :destroy | ||||
|     # Status records pinned by the account | ||||
|     has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status | ||||
| 
 | ||||
|     # Endorsements | ||||
|     has_many :account_pins, inverse_of: :account, dependent: :destroy | ||||
|     # Account records endorsed (pinned) by the account | ||||
|     has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account | ||||
| 
 | ||||
|     # Media | ||||
|     has_many :media_attachments, dependent: :destroy | ||||
|     has_many :polls, dependent: :destroy | ||||
| 
 | ||||
|     # Report relationships | ||||
|     has_many :reports, dependent: :destroy, inverse_of: :account | ||||
|     has_many :targeted_reports, class_name: 'Report', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account | ||||
| 
 | ||||
|     has_many :report_notes, dependent: :destroy | ||||
|     has_many :custom_filters, inverse_of: :account, dependent: :destroy | ||||
| 
 | ||||
|     # Moderation notes | ||||
|     has_many :account_moderation_notes, dependent: :destroy, inverse_of: :account | ||||
|     has_many :targeted_moderation_notes, class_name: 'AccountModerationNote', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account | ||||
|     has_many :account_warnings, dependent: :destroy, inverse_of: :account | ||||
|     has_many :strikes, class_name: 'AccountWarning', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account | ||||
| 
 | ||||
|     # Lists (that the account is on, not owned by the account) | ||||
|     has_many :list_accounts, inverse_of: :account, dependent: :destroy | ||||
|     # List records the account has been added to (not owned by the account) | ||||
|     has_many :lists, through: :list_accounts | ||||
| 
 | ||||
|     # Lists (owned by the account) | ||||
|     has_many :owned_lists, class_name: 'List', dependent: :destroy, inverse_of: :account | ||||
| 
 | ||||
|     # Account migrations | ||||
|     # Account record where account has been migrated | ||||
|     belongs_to :moved_to_account, class_name: 'Account', optional: true | ||||
|     has_many :migrations, class_name: 'AccountMigration', dependent: :destroy, inverse_of: :account | ||||
|     has_many :aliases, class_name: 'AccountAlias', dependent: :destroy, inverse_of: :account | ||||
| 
 | ||||
|     # Hashtags | ||||
|     # Tag records applied to account | ||||
|     has_and_belongs_to_many :tags # rubocop:disable Rails/HasAndBelongsToMany | ||||
|     has_many :featured_tags, -> { includes(:tag) }, dependent: :destroy, inverse_of: :account | ||||
| 
 | ||||
|     # Account deletion requests | ||||
|     has_one :deletion_request, class_name: 'AccountDeletionRequest', inverse_of: :account, dependent: :destroy | ||||
| 
 | ||||
|     # Follow recommendations | ||||
|     # FollowRecommendation for account (surfaced via view) | ||||
|     has_one :follow_recommendation, inverse_of: :account, dependent: nil | ||||
|     has_one :follow_recommendation_suppression, inverse_of: :account, dependent: :destroy | ||||
| 
 | ||||
|     # Account statuses cleanup policy | ||||
|     has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy', inverse_of: :account, dependent: :destroy | ||||
| 
 | ||||
|     # Imports | ||||
|     # BulkImport records owned by account | ||||
|     has_many :bulk_imports, inverse_of: :account, dependent: :delete_all | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue