2016-07-11 9 views
0

У меня есть Rails объекта Продукт:Форматирование метод to_json для дочернего объекта

{ 
    id: 1 
    name: 'soup' 
} 

и объект Customer:

{ 
    id: 20 
    name: 'Ryans' 
} 

Они связаны через:

class Product < ActiveRecord::Base 
    belongs_to :customer 

Когда я называю Product.to_json (методы: [: клиент]), я получаю:

{ 
    id: 1 
    name: 'soup', 
    customer: { 
     id: 20 
     name: 'Ryans' 
    } 
} 

Но мне это нужно, чтобы быть в формате:

{ 
    id: 1 
    name: 'soup', 
    customer_name: 'Ryans' 
} 

Возможно ли это? Я использую Rails v4.1.7

+2

Вы можете реализовать метод 'customer_name', а затем называют' to_json (методы: [: customer_name]) ' – lcguida

ответ

1

Вы можете делегировать name вашему Customer класса

class Product < ActiveRecord::Base 
    belongs_to :customer 
    delegate :name, to: :customer, prefix: true 

Вы можете сделать

Product.to_json(methods: [:customer_name]) 
Смежные вопросы