Rename :poll to :preloadable_poll and :owned_poll to :poll on Status (#10401)
Also, fix some n+1 queries Resolve #10365
This commit is contained in:
parent
f46f67d984
commit
f1bc90ab50
15 changed files with 45 additions and 43 deletions
|
@ -25,7 +25,7 @@ class Notification < ApplicationRecord
|
|||
poll: 'Poll',
|
||||
}.freeze
|
||||
|
||||
STATUS_INCLUDES = [:account, :application, :media_attachments, :tags, active_mentions: :account, reblog: [:account, :application, :media_attachments, :tags, active_mentions: :account]].freeze
|
||||
STATUS_INCLUDES = [:account, :application, :preloadable_poll, :media_attachments, :tags, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, :tags, active_mentions: :account]].freeze
|
||||
|
||||
belongs_to :account, optional: true
|
||||
belongs_to :from_account, class_name: 'Account', optional: true
|
||||
|
|
|
@ -45,7 +45,7 @@ class Status < ApplicationRecord
|
|||
belongs_to :account, inverse_of: :statuses
|
||||
belongs_to :in_reply_to_account, foreign_key: 'in_reply_to_account_id', class_name: 'Account', optional: true
|
||||
belongs_to :conversation, optional: true
|
||||
belongs_to :poll, optional: true
|
||||
belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true
|
||||
|
||||
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies, optional: true
|
||||
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, optional: true
|
||||
|
@ -63,7 +63,7 @@ class Status < ApplicationRecord
|
|||
has_one :notification, as: :activity, dependent: :destroy
|
||||
has_one :stream_entry, as: :activity, inverse_of: :status
|
||||
has_one :status_stat, inverse_of: :status
|
||||
has_one :owned_poll, class_name: 'Poll', inverse_of: :status, dependent: :destroy
|
||||
has_one :poll, inverse_of: :status, dependent: :destroy
|
||||
|
||||
validates :uri, uniqueness: true, presence: true, unless: :local?
|
||||
validates :text, presence: true, unless: -> { with_media? || reblog? }
|
||||
|
@ -72,7 +72,7 @@ class Status < ApplicationRecord
|
|||
validates :reblog, uniqueness: { scope: :account }, if: :reblog?
|
||||
validates :visibility, exclusion: { in: %w(direct limited) }, if: :reblog?
|
||||
|
||||
accepts_nested_attributes_for :owned_poll
|
||||
accepts_nested_attributes_for :poll
|
||||
|
||||
default_scope { recent }
|
||||
|
||||
|
@ -107,7 +107,7 @@ class Status < ApplicationRecord
|
|||
:tags,
|
||||
:preview_cards,
|
||||
:stream_entry,
|
||||
:poll,
|
||||
:preloadable_poll,
|
||||
account: :account_stat,
|
||||
active_mentions: { account: :account_stat },
|
||||
reblog: [
|
||||
|
@ -118,7 +118,7 @@ class Status < ApplicationRecord
|
|||
:media_attachments,
|
||||
:conversation,
|
||||
:status_stat,
|
||||
:poll,
|
||||
:preloadable_poll,
|
||||
account: :account_stat,
|
||||
active_mentions: { account: :account_stat },
|
||||
],
|
||||
|
@ -214,10 +214,11 @@ class Status < ApplicationRecord
|
|||
|
||||
def emojis
|
||||
return @emojis if defined?(@emojis)
|
||||
fields = [spoiler_text, text]
|
||||
fields += owned_poll.options unless owned_poll.nil?
|
||||
|
||||
fields = [spoiler_text, text]
|
||||
fields += preloadable_poll.options unless preloadable_poll.nil?
|
||||
|
||||
@emojis = CustomEmoji.from_text(fields.join(' '), account.domain)
|
||||
@emojis
|
||||
end
|
||||
|
||||
def mark_for_mass_destruction!
|
||||
|
@ -453,7 +454,7 @@ class Status < ApplicationRecord
|
|||
end
|
||||
|
||||
def set_poll_id
|
||||
update_column(:poll_id, owned_poll.id) unless owned_poll.nil?
|
||||
update_column(:poll_id, poll.id) unless poll.nil?
|
||||
end
|
||||
|
||||
def set_visibility
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue