Я пытаюсь переопределить as_json в одной из моих моделей, отчасти для включения данных из другой модели, частично для выделения ненужных полей. Из того, что я прочитал это предпочтительный подход в Rails 3. Для простоты, скажем, у меня есть что-то вроде:Переопределение as_json не влияет?
class Country < ActiveRecord::Base
def as_json(options={})
super(
:only => [:id,:name]
)
end
end
и в мой контроллер просто
def show
respond_to do |format|
format.json { render :json => @country }
end
end
Yet независимо Я пытаюсь, вывод всегда содержит полные данные, поля не фильтруются по условию «: only». В принципе, мой переопределение, кажется, не загнуться, но если я могу изменить его, скажем ...
class Country < ActiveRecord::Base
def as_json(options={})
{foo: "bar"}
end
end
... Я действительно получить ожидаемый результат в формате JSON. Я просто получил синтаксис неправильно?
Btw - Я получил это далеко после прочтения http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/ –
См. Также http://stackoverflow.com/questions/2556468/override-as-json-or-to-json-model-class-name –
И https://rails.lighthouseapp.com/projects/8994/tickets/ 3087 –