Merge pull request #1920 from nickborromeo/list-controller
Extract queries to keep logic in the Categories Model
This commit is contained in:
commit
b035c050d2
|
@ -219,13 +219,12 @@ class ListController < ApplicationController
|
|||
|
||||
parent_category_id = nil
|
||||
if parent_slug_or_id.present?
|
||||
parent_category_id = Category.where(slug: parent_slug_or_id).pluck(:id).first ||
|
||||
Category.where(id: parent_slug_or_id.to_i).pluck(:id).first
|
||||
parent_category_id = Category.query_parent_category(parent_slug_or_id)
|
||||
raise Discourse::NotFound.new if parent_category_id.blank?
|
||||
end
|
||||
|
||||
@category = Category.where(slug: slug_or_id, parent_category_id: parent_category_id).includes(:featured_users).first ||
|
||||
Category.where(id: slug_or_id.to_i, parent_category_id: parent_category_id).includes(:featured_users).first
|
||||
@category = Category.query_category(slug_or_id, parent_category_id)
|
||||
|
||||
guardian.ensure_can_see!(@category)
|
||||
|
||||
raise Discourse::NotFound.new if @category.blank?
|
||||
|
|
|
@ -340,6 +340,16 @@ SQL
|
|||
[read_restricted, mapped]
|
||||
end
|
||||
|
||||
def self.query_parent_category(parent_slug)
|
||||
self.where(slug: parent_slug).pluck(:id).first ||
|
||||
self.where(id: parent_slug.to_i).pluck(:id).first
|
||||
end
|
||||
|
||||
def self.query_category(slug, parent_category_id)
|
||||
self.where(slug: slug, parent_category_id: parent_category_id).includes(:featured_users).first ||
|
||||
self.where(id: slug.to_i, parent_category_id: parent_category_id).includes(:featured_users).first
|
||||
end
|
||||
|
||||
def uncategorized?
|
||||
id == SiteSetting.uncategorized_category_id
|
||||
end
|
||||
|
|
|
@ -372,6 +372,21 @@ describe Category do
|
|||
|
||||
end
|
||||
|
||||
describe ".query_parent_category" do
|
||||
it "should return the parent category id given a parent slug" do
|
||||
parent_category.name = "Amazing Category"
|
||||
parent_category.id.should == Category.query_parent_category(parent_category.slug)
|
||||
end
|
||||
end
|
||||
|
||||
describe ".query_category" do
|
||||
it "should return the category" do
|
||||
category = Fabricate(:category, name: "Amazing Category", parent_category_id: parent_category.id, user: user)
|
||||
parent_category.name = "Amazing Parent Category"
|
||||
category.should == Category.query_category(category.slug, parent_category.id)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue