2015-10-26 2 views
0

Я использую grape и grape-entity в проекте Rails 4.2.1, и у меня возникает странная ошибка с представлением с использованием правильной модели.grape-entity и has_many требует явного объекта

Согласно the documentation, организуя свои объекты в рамках каждой модели результатов в этом:

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

Кроме того, в документации также говорит:

По умолчанию каждый объект коллекции заворачивают в экземпляр вашего класса Entity.

Вот код, который у меня есть сейчас.

class User < ActiveRecord::Base 
    class Entity < Grape::Entity 
    expose :id, :name 
    expose :addresses 
    end 
end 

class Address < ActiveRecord::Base 
    class Entity < Grape::Entity 
    expose :id, :street1 
    end 
end 

Если я не делаю expose :addresses, with: Address:Entity, он не работает, и до сих пор обнажает все поля адреса. По какой-либо причине он автоматически не обнаруживает правильный объект?

+0

Я думаю, что это происходит потому, что это просто синтаксический анализатор. Это не связано напрямую с Active Record. Кстати, вы можете использовать любой объект вместо одного из Active Record. Поэтому, если вы, например, разбираете хэш с целым числом и строкой, он должен работать, независимо, если он предоставлен из базы данных или нет. –

ответ

0

Оказывается, это ожидаемое поведение. Grape только определяет класс сущности, который вложен в модель, поэтому он не знает, использовать класс сущности любых связанных записей.

Там в запросе функции поданной here (который также, где я получил от этого):