У меня есть модель под названием Exchanges, в которой хранится user_id пользователя, который ее создал.Я могу позвонить @exchange.user
, и он вернет User.where(user_id: @exchange.user_id)
Также существует ассоциация, чтобы показать всем пользователям, которые выбрали Exchange, который можно вызвать с помощью @exchange.favorite_users
Я хочуверните оба из них в ответе json, но возвращается только первый.
@exchanges = Exchange.includes(:tags, :favorite_users, :user).where(approved: true)
respond_to do |format|
format.json { render json: {data: {exchanges: @exchanges.to_json(include: [:tags, user: {:only => [:id,:slug], :methods => [:avatar_url]}, favorite_users: { only: [:id]}] ), tags: @tags.to_json }}}
end
Эта версия возвращает user: {:only => [:id,:slug], :methods => [:avatar_url]}
, но не favorite_users: { only: [:id]}
.
format.json { render json: {data: {exchanges: @exchanges.to_json(include: [:tags, favorite_users: { only: [:id]}, user: {:only => [:id,:slug], :methods => [:avatar_url]}] ), tags: @tags.to_json }}}
Этот возвращает только favorite_users: { only: [:id]}
, но не user: {:only => [:id,:slug], :methods => [:avatar_url]}
Как я могу вернуть оба?
Обмен Модель
class Exchange < ApplicationRecord
belongs_to :language
belongs_to :user
has_many :exchanges_users
has_many :favorite_users, :through => :exchanges_users, source: :user
has_many :tags_exchanges
has_many :tags, :through => :tags_exchanges
end