#ruby-on-rails #ruby #activerecord
#ruby-on-rails #ruby #activerecord
Вопрос:
Я знаю о методах includes и extract_associated .
extract_associated, используемый здесь, в документах Rails, возвращает только пользовательские записи —
account.memberships.extract_associated(:user)
# => Returns collection of User records
Я хочу вернуть записи о членстве С записями пользователей в том же массиве. Я знаю, что includes
метод должен сделать это за меня, но мой ответ включает только user_id, а не фактическую запись, т. Е. Использование includes вообще не изменило то, что возвращается, вот так:-
account.memberships.includes(:user)
# => Returns collection of Membership records, with user_ids
[{ "id": 3, "account_id": 1, "user_id": 2, "membership_name": 'Annual Membership'}]
Мои членства принадлежат пользователю, а у пользователя есть членство во многих.
Чего мне здесь не хватает?
membership.user
На мой взгляд, это не вариант для меня, потому что я использую VueJS, поэтому мне нужно передать все необходимые данные.
Комментарии:
1. Работа с объектами — лучший / ruby способ сделать это. Тем не менее, попробуйте использовать как «объединения», так и «включает» и посмотрите, даст ли это вам то, что вам нужно. Надеюсь, вы сможете получить то, что вам нужно, из этого как есть, но в противном случае вам также нужно будет указать «выбрать».
Ответ №1:
вы можете включить коллекцию ассоциации в виде json.
account.memberships.includes(:user)
.as_json(include: { memberships: { include: :user } })
Подробности об API см. В документации.
https://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html