Включение виртуального атрибута в хеш - PullRequest
9 голосов
/ 25 марта 2011

Я пытаюсь включить виртуальный атрибут / метод в JES-хэш answer_to.

Модель (employee.rb)

attr_reader :my_method

def my_method
  return "foobar"
end

Контроллер (employee_controller.rb)

respond_to :json

def index
  @employees = Employee.all
  respond_with(:data => @employees, :total => Employee.all.count)
end

Важно, чтобы у меня были «данные» в качестве корня json для сбора «сотрудников», а также для включения «итога» в хеш.Это работает хорошо и возвращает хороший результат JSON для всех сотрудников и общую стоимость.

Моя задача: Как включить виртуальный атрибут "my_method" для каждого сотрудника в хэш сотрудников в ответе JSON?

Спасибо за ваше время!

Ответы [ 3 ]

14 голосов
/ 25 марта 2011

Вот что у меня сработало.

Employee.rb

def as_json(options={})
  super.as_json(options).merge({:my_method => my_method})
end

Спасибо за каменщика за то, что он указал мне правильное направление. Любые другие решения приветствуются.

3 голосов
/ 19 июля 2012

В Rails 3 можно использовать следующие

@yourmodel.to_json(methods: ['virtual_attr1', 'virtual_attr2']
1 голос
/ 25 марта 2011

Перезапись as_json в вашей модели должна помочь:

def as_json(options={})
  { :methods=>[:my_method] }.merge(options)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...