У меня возникли проблемы с поиском, как получить объект ActiveRecord с глубоко вложенными ассоциациями. Ниже приведен пример того, что я пытаюсь достичь, выраженный как объект JSON.Получение глубоко вложенных ассоциаций ActiveRecord
В настоящее время моя модель имеет проекты:
has_many :groups
has_many :users, through: :groups
has_many :members, through: :groups, source: :users
Ожидаемый результат (JSON):
{
"id": 7,
"name": "Test Project",
"description": "Project description",
"groups": [
{
"id": 1,
"name": "Test Group 1",
"description": "First test group",
"members": [
{
"id": 1,
"name": "Admin",
"email": "[email protected]"
},
{
"id": 2,
"name": "Test User",
"email": "[email protected]"
}
]
}
]
}
Пример кода:
class Project < ActiveRecord::Base
has_many :groups
has_many :users, through: :groups
has_many :members, through: :groups, source: :users
end
Ближайший я сумел к желаемому результату был путем добавления метода групп к модели проектов, чтобы получить все члены:
Ближайший результат (JSON):
{
"id": 7,
"name": "Test Project",
"description": "Project description",
"groups": [
{
"id": 1,
"name": "Admin",
"email": "[email protected]"
},
{
"id": 2,
"name": "Test User",
"email": "[email protected]"
}
]
}
Пример кода:
class Project < ActiveRecord::Base
has_many :groups
has_many :users, through: :groups
has_many :members, through: :groups, source: :users
def groups
members.all
end
end
Это идеальный вариант! Благодарю. Мы используем сериализаторы, но я не думаю, что полностью их понял. Я имею в виду, я все еще не знаю, но вы определенно помогли мне понять их в этом сценарии. Благодаря! – OBCENEIKON
Вас приветствуют. Я думаю, что вы могли бы начать с чтения сериализации: https://en.wikipedia.org/wiki/Serialization > В информатике, в контексте хранения данных, сериализация представляет собой процесс перевода структур данных или состояния объекта в формат, который может быть сохранен (например, в буфере файла или памяти или передан по линии сетевого соединения) и впоследствии реконструирован в той же или другой компьютерной среде. – adantj