2013-07-21 2 views
0

Мне нужно отобразить ответ JSON для REST api, в котором мне нужно включить дополнительные поля JSON, которые не являются частью визуализируемой модели. Я прочитал этот link о ActiveModel, где предлагается использовать опцию «: methods» для вызова другого метода, где я могу использовать дополнительные общие поля.Добавить общие поля в рельсы Ответ JSON

def add_fields 
    { "field1" => "true" } 
end 

if @user.save 
    render :json => @user.as_json(:only => [:username, :org], :methods => [:add_fields]) 
endif 

Однако, когда ответ JSON будет получен только имя пользователя & орга поле возвращается в формате JSON. Дополнительные параметры, определенные в методе «add_fields», не добавляются. Что мне не хватает, из-за чего дополнительные поля не добавляются в ответ JSON. Или есть лучший способ добавить общие поля (не часть модели) в ответ JSON?

+0

Вы уверены, что реализовали метод add_fields в User? –

+0

Моя ошибка, я добавил метод в другую модель. Спасибо, что указали это. Сейчас проблема исправлена. – sthustfo

+0

Приятно слышать, что я отправил свой комментарий в качестве ответа, чтобы вы могли отметить его как ответ. –

ответ

0

Возможно, вы забыли внедрить метод #add_fields в User.

0

Я только что протестировал это на своей собственной модели пользователя, и все получилось просто отлично.

2.0.0p195 :002 > user.as_json(only: [:first_name, :last_name], methods: [:full_name]) 
{ 
    "first_name" => "Cody", 
    "last_name" => "Russell", 
     :full_name => "Cody Russell" 
} 

У вас есть определенный метод, и это общедоступный метод?

Смежные вопросы