API v1 article_categories endpoint

This commit is contained in:
wvengen 2018-10-13 16:29:36 +02:00 committed by wvengen
parent e1d50e5b9c
commit 69732cca0d
6 changed files with 117 additions and 0 deletions

View file

@ -0,0 +1,26 @@
class Api::V1::ArticleCategoriesController < Api::V1::BaseController
include Concerns::CollectionScope
def index
render json: search_scope
end
def show
render json: scope.find(params.require(:id))
end
private
def max_per_page
nil
end
def default_per_page
nil
end
def scope
ArticleCategory.all
end
end

View file

@ -9,6 +9,12 @@ class ArticleCategory < ApplicationRecord
# @!attribute articles
# @return [Array<Article>] Articles with this category.
has_many :articles
# @!attribute order_articles
# @return [Array<OrderArticle>] Order articles with this category.
has_many :order_articles, through: :articles
# @!attribute orders
# @return [Array<Order>] Orders with articles in this category.
has_many :orders, through: :order_articles
normalize_attributes :name, :description
@ -16,6 +22,14 @@ class ArticleCategory < ApplicationRecord
before_destroy :check_for_associated_articles
def self.ransackable_attributes(auth_object = nil)
%w(id name)
end
def self.ransackable_associations(auth_object = nil)
%w(articles order_articles orders)
end
# Find a category that matches a category name; may return nil.
# TODO more intelligence like remembering earlier associations (global and/or per-supplier)
def self.find_match(category)

View file

@ -0,0 +1,3 @@
class ArticleCategorySerializer < ActiveModel::Serializer
attributes :id, :name
end