Как переименовать свойство / атрибут ресурса с помощью jsonapi-resources ruby ​​gem

Я строю json api с помощью rails, используя гем json api-resources. Библиотека действительно отличная, она выполняет много работы.

Однако некоторые имена столбцов в нашей БД не очень значимы для отображения в API.

Итак, мой вопрос: возможно ли переименовать свойство / атрибут в ресурс?

Пример:

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

class User < ActiveRecord::Base
  attr_accessor :login
end

И я хочу login в API отображаются как username Например:

class UserResource < JSONAPI::Resource
  attribute :username, map_to: :login
end

Спасибо!

3 ответа

Решение

Установить :username псевдоним для вашего :login атрибут:

class User < ActiveRecord::Base
  attr_accessor :login

  alias_attribute :username, :login
end

Затем в JSONAPI::Resources (JR) вы можете указать свой username атрибут так:

class UserResource < JSONAPI::Resource
  attribute :username
end

Установив псевдоним, вы отобразили username приписать login атрибут, поэтому не имеет значения, используете ли вы username или же login, он вернет то же значение.

Я думаю, что вам нужно использовать псевдоним или alias_method. http://blog.bigbinary.com/2012/01/08/alias-vs-alias-method.html

Как правило, самый простой способ изменить имя или значение атрибута - это переопределить атрибут. В вашем случае это будет:

attributes :username

def username
  @model.login
end

Вот это в Readme: https://github.com/cerebris/jsonapi-resources

Другие вопросы по тегам