Rails json对象与模型关联

时间:2013-09-19 18:18:37

标签: ruby-on-rails ruby json 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

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

我的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

2 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

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

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

答案 1 :(得分:1)

试试这个。

render json: { "transactions" => @user.transactions.map do |transaction|
                    JSON.parse(transaction.to_json(:include => :users))
               end
             }

它将是一个哈希而不是字符串数组。