Rails json对象与模型关联

Ada*_*Sz. 4 ruby json ruby-on-rails associations

我是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
Run Code Online (Sandbox Code Playgroud)

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

我的json应该是这样的:

{"transactions":[{"name":"transaction1", "users":[{"userName":"user1"},{"userName":"user2"}]},{"name":"transaction2", "users":[{"userName":"user1"},{"userName":"user2"}]}]}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@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
Run Code Online (Sandbox Code Playgroud)

MrY*_*iji 6

您可以执行以下操作:

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

基于这个问题/答案:Rails对象关系和JSON渲染