我有一个名为Exchange的模型,它存储创建它的用户的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发布于 2019-01-08 08:02:18
@exchanges.to_json(include: [
:tags,
{user: {only: [:id,:slug], methods: [:avatar_url]}},
{favorite_users: { only: [:id]}}
])如果要返回两个关联模型,请使用{}包装关联。
Braket只使用关联符号,但不能使用选项
https://stackoverflow.com/questions/54011732
复制相似问题