Как переопределить, как мое свойство классов отображает JSON для моей модели заказа - PullRequest
0 голосов
/ 20 октября 2018

В настоящее время я делаю это в своем действии контроллера:

render json: order.to_json(:include => [items: {include: [products: {include: [:inventory]}]}])

Теперь я перемещаю это к более богатому объекту, как это:

class OrderResponse
  attr_accessor :success, :errors, :order, :users
  def initialize(success, errors)
    @success = success
    @errors = errors
  end

end

Проблема в том, что этоне отображает все внутренние данные модели заказа.Теперь у json есть только атрибуты порядка, так как я не вызываю: include now.

response = OrderResponse.new(true, [])
response.order = order
response.user = user

render json: response

Как мне переопределить способ преобразования ордера в json сейчас?

1 Ответ

0 голосов
/ 20 октября 2018

Так же, как вы можете создавать шаблоны .html с использованием языка шаблонов ERB (или других), вы можете использовать jbuilder DSL для визуализации сложных ответов json.

OrdersController:

@response = OrderResponse.new(true, [])
render :response, formats: [:json]

views / orders / response.json.jbuilder

json.call @response, :id
json.user do
  json.extract! @response.user, :id, :created_at # ...
end
json.order do
  json.extract! @response.order, :id, :created_at # ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...