首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails json包含两个相同模型的实例。

Rails json包含两个相同模型的实例。
EN

Stack Overflow用户
提问于 2019-01-02 18:58:29
回答 1查看 79关注 0票数 2

我有一个名为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)

代码语言:javascript
复制
 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]}

代码语言:javascript
复制
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]}

我怎么把这两样都还回去呢?

交换模型

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 08:02:18

代码语言:javascript
复制
@exchanges.to_json(include: [
    :tags, 
    {user: {only: [:id,:slug], methods: [:avatar_url]}}, 
    {favorite_users: { only: [:id]}}
])

如果要返回两个关联模型,请使用{}包装关联。

Braket只使用关联符号,但不能使用选项

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54011732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档