Я не совсем понял ваши требования, но вы можете делать практически все что угодно с помощью специального сериализатора. Вы можете прочитать о сериализаторах ActiveModel здесь .
Но, в основном, на контроллере ваших продуктов, на методе, который вы хотите визуализировать ваши продукты:
class ProductsController < ActionController::Base
def index
render json: Product.all, each_serializer: ProductSerializer
end
end
Затем в папке app/serializers
сохраняется класс сериализатора
.
class ProductSerializer < ActiveModel::Serializer
attributes :id, :name, :description, :created_at, :updated_at, :prices
def prices
PriceTablesProduct.where(product_id: object.id)
end
end
В ваш класс сериализатора вы можете добавлять все методы, которые вы хотите делать, что хотите. Даже перезаписать существующие методы, чтобы они отображались особым образом.
Вы можете даже отобразить связанные модели, используя хорошо известные ключевые слова has_many
, belongs_to
и т. Д.