Ответ JSON Rails API, изменение имени метода - PullRequest
0 голосов
/ 18 октября 2018

У меня есть Rails 5 API, который отображает объект с некоторыми из его методов в JSON.

render json: { rides: @rides }.to_json( :methods => [ :is_preferred ]), status: 200

Так что это возвращает что-то вроде:

{
 id: 123,
 is_preferred: true
}

Но я бы хотелизмените имя атрибута, который ссылается на метод is_preferred.

Вывод, который я хотел бы, id:

{
 id: 123,
 preferred: true
}

Я пытался

render json: { rides: @rides }.to_json( :methods => [ preferred: :is_preferred ]), status: 200

Но это не такРабота.Проще всего было бы изменить имя метода в модели, но в этом случае это невозможно.

Можно ли каким-либо образом манипулировать именем внутри ответа?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете попробовать с ActiveModel :: Serializer , затем вы можете определить ключ атрибута как хотите

class RideSerializer < ActiveModel::Serializer
  attribute :preferred, key: :is_preferred
end

или использовать метод для получения значения атрибута

class RideSerializer < ActiveModel::Serializer
  attribute :is_preferred

  def is_preferred
    object.preferred
  end
end

Использование сериализаторов имеет много преимуществ и очень полезно, если вы хотите создавать собственные ответы.

...