в рельсах рендеринга JSON, как показать другое имя ключа для конкретного атрибута - PullRequest
0 голосов
/ 05 февраля 2012

Я использую Mongoid в качестве моего бэкэнда, и мне нужно вернуть json с атрибутом "id" вместо стандартного "_id", используемого, например, mongoid

, теперь у меня есть

[{
  "_id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "_id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

от звонка для рендеринга:

  format.json { render :json => @groups, only:[:name, :_id] }

но нужно,

[{
  "id": "4f2d8b971773eb18e6000001",
  "name": "Scooter"
}, {
  "id": "4f2d8d9f1773eb18fd000001",
  "name": "Coldplay"
}]

Есть какие-нибудь ярлыки?

Спасибо !!

1 Ответ

1 голос
/ 05 февраля 2012

Если вы можете добавить средство доступа к атрибуту для _id, называемое просто id, то это легко решить, переопределив as_json в вашей модели.

def id
  self._id
end

def as_json(options={})
  options.merge!(:except => :_id, :methods => :id)
  super(options)
end

Обновление: Сделано переопределение немного более удобным для родительского метода.

...