mirror of
https://github.com/discourse/discourse.git
synced 2025-01-18 14:52:46 +08:00
PERF: Avoid looking up the same category twice in TopicCreator
.
This commit is contained in:
parent
535c594891
commit
742decc2a1
|
@ -119,7 +119,6 @@ class TopicCreator
|
||||||
topic_params[:subtype] = TopicSubtype.moderator_warning if @opts[:is_warning]
|
topic_params[:subtype] = TopicSubtype.moderator_warning if @opts[:is_warning]
|
||||||
|
|
||||||
category = find_category
|
category = find_category
|
||||||
|
|
||||||
@guardian.ensure_can_create!(Topic, category) unless (@opts[:skip_validations] || @opts[:archetype] == Archetype.private_message)
|
@guardian.ensure_can_create!(Topic, category) unless (@opts[:skip_validations] || @opts[:archetype] == Archetype.private_message)
|
||||||
|
|
||||||
topic_params[:category_id] = category.id if category.present?
|
topic_params[:category_id] = category.id if category.present?
|
||||||
|
@ -137,20 +136,22 @@ class TopicCreator
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_category
|
def find_category
|
||||||
# PM can't have a category
|
@category ||= begin
|
||||||
@opts.delete(:category) if @opts[:archetype].present? && @opts[:archetype] == Archetype.private_message
|
# PM can't have a category
|
||||||
|
@opts.delete(:category) if @opts[:archetype].present? && @opts[:archetype] == Archetype.private_message
|
||||||
|
|
||||||
if @opts[:shared_draft]
|
if @opts[:shared_draft]
|
||||||
return Category.find(SiteSetting.shared_drafts_category)
|
return Category.find(SiteSetting.shared_drafts_category)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Temporary fix to allow older clients to create topics.
|
# Temporary fix to allow older clients to create topics.
|
||||||
# When all clients are updated the category variable should
|
# When all clients are updated the category variable should
|
||||||
# be set directly to the contents of the if statement.
|
# be set directly to the contents of the if statement.
|
||||||
if (@opts[:category].is_a? Integer) || (@opts[:category] =~ /^\d+$/)
|
if (@opts[:category].is_a? Integer) || (@opts[:category] =~ /^\d+$/)
|
||||||
Category.find_by(id: @opts[:category])
|
Category.find_by(id: @opts[:category])
|
||||||
else
|
else
|
||||||
Category.find_by(name_lower: @opts[:category].try(:downcase))
|
Category.find_by(name_lower: @opts[:category].try(:downcase))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user