加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 带有模型关联的Rails json对象

发布时间:2020-12-17 03:05:59 所属栏目:百科 来源:网络整理
导读:我是 Ruby和Rails的新手.我在为我的服务构建json响应时遇到问题. 我有两个型号: class Transaction ActiveRecord::Basehas_and_belongs_to_many :usersendclass User ActiveRecord::Basehas_and_belongs_to_many :transactionsend 因此用户拥有交易集合并且
我是 Ruby和Rails的新手.我在为我的服务构建json响应时遇到问题.
我有两个型号:

class Transaction < ActiveRecord::Base
has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
has_and_belongs_to_many :transactions
end

因此用户拥有交易集合并且交易具有用户集合.我要做的是返回所有涉及用户参与的交易以及涉及所有交易的其他用户.

我的json应该是这样的:

{"transactions":[{"name":"transaction1","users":[{"userName":"user1"},{"userName":"user2"}]},{"name":"transaction2",{"userName":"user2"}]}]}

这是我的代码:

@user = User.find_by_facebookId(params[:id])

#json = User.find_by_facebookId(params[:id],:include => :transactions).to_json( :include => :transactions )

if @user != nil
   render json: {"transactions" => @user.transactions.map do |transaction|
         transaction
   end
   }
else
  render json: {"transactions" => [{}]}
end

解决方法

您可以执行以下操作:

json_data = @user.transactions.map do |transaction|
  transaction.as_json(include: :users)
end
render json: { transactions: json_data }

基于这个问题/答案:Rails Object Relationships and JSON Rendering

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读