grape-entity и has_many требует явной сущности

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

Согласно документации, организация моих сущностей в каждой модели приводит к следующему:

Grape автоматически обнаружит класс Entity и будет использовать его для представления ваших моделей.

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

По умолчанию каждый объект коллекции заключен в экземпляр вашего класса 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, это не сработает и все равно будут открыты все поля адреса. По какой причине он автоматически не определяет правильную сущность?


person Waynn Lue    schedule 26.10.2015    source источник
comment
Я думаю, это происходит потому, что это всего лишь парсер. Это не имеет прямого отношения к Active Record. Кстати, вы можете использовать любой объект вместо объекта из Active Record. Поэтому, если вы, например, анализируете хеш с целым числом и строкой, он должен работать независимо от того, предоставлен ли он из базы данных или нет.   -  person Ivan Santos    schedule 02.11.2015


Ответы (1)


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

Запрос функции подан здесь (откуда я и получил это ):

person Waynn Lue    schedule 02.11.2015