我有一个名为exchanges的模型,它存储创建它的用户的用户名。我可以打电话
@exchange.user
它又回来了
User.where(user_id: @exchange.user_id)
还有一个关联来显示所有喜欢交换的用户,可以使用
@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 }}}
这只回来了
最喜爱的用户:仅:[:id]
,但不是
用户::仅=>[:id,:slug],:方法=>[: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