我是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", "users":[{"userName":"user1"},{"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
答案 0 :(得分:5)
您可以执行以下操作:
json_data = @user.transactions.map do |transaction|
transaction.as_json(include: :users)
end
render json: { transactions: json_data }
答案 1 :(得分:1)
试试这个。
render json: { "transactions" => @user.transactions.map do |transaction|
JSON.parse(transaction.to_json(:include => :users))
end
}
它将是一个哈希而不是字符串数组。