@object.as_json
o as_json possui uma maneira muito flexível de configurar objetos complexos de acordo com as relações do modelo
EXEMPLO
A campanha modelo pertence à loja e tem uma lista
A lista de modelos possui muitas list_tasks e cada list_tasks possui muitos comentários
Podemos obter um json que combina todos esses dados facilmente.
@campaign.as_json(
{
except: [:created_at, :updated_at],
include: {
shop: {
except: [:created_at, :updated_at, :customer_id],
include: {customer: {except: [:created_at, :updated_at]}}},
list: {
except: [:created_at, :updated_at, :observation_id],
include: {
list_tasks: {
except: [:created_at, :updated_at],
include: {comments: {except: [:created_at, :updated_at]}}
}
}
},
},
methods: :tags
})
Métodos de aviso :: tags podem ajudá-lo a anexar qualquer objeto adicional que não tenha relações com outras pessoas. Você só precisa definir um método com tags de nome na campanha modelo . Este método deve retornar o que você precisar (por exemplo, Tags.all)
Documentação oficial para as_json