Добавить постоянный атрибут к объекту Grape

Я пытаюсь создать набор API с использованием Rails и Grape. Модель пользователя, как показано ниже:

{
    "email": "foo@bar.com"
    "name": "Foo Bar"
}

Теперь на уровне представления API я хочу, чтобы пользовательский объект был таким:

{
    "object": "User"
    "email": "foo@bar.com"
    "name": "Foo Bar"
}

Поскольку я использую гем Grape Entity для представления своих моделей, вопрос на самом деле таков: как добавить дополнительный атрибут CONSTANT-value в класс Grape Entity? Ценю твою помощь!

1 ответ

Решение

Вы можете добавить дополнительное поле, добавив функцию в класс следующим образом:

class XXX < Grape::Entity
    expose :object_name
    expose :email
    expose :name

    private
    def object_name
        "User"
    end
end

Но если имя функции - object, оно не будет работать. Вы выбрали другое имя для этого поля.

Для большего количества опций вы также можете использовать такой блок, в данном случае, независимо от того, какое имя поля вы используете.

class XXX < Grape::Entity
    expose :object do |you_have_to_set_a_parameter_here|
                "User"
            end
    expose :email
    expose :name
end
Другие вопросы по тегам