从ActiveRecord嵌套JSON

时间:2013-11-27 16:45:52

标签: ruby-on-rails json activerecord

我有以下类层次结构:

class User < ActiveRecord::Base
  has_many :projects
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :project_personas
  has_many :personas, through: :project_personas
end

class ProjectPersona < ActiveRecord::Base
  belongs_to :project
  belongs_to :persona
end

class Persona < ActiveRecord::Base
end

我试图让用户像JSON一样:

render json: @user.to_json(
  include: {
    projects: {
      include: :personas
    }
  })

什么不起作用。有效的是:

render json: @user.to_json(
    include: {
        projects: {
            include: {
                project_personas: {
                    include: :persona
                }
            }
        }
    })

但我不想拥有此project_personas级别。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

我想我理解你的问题,但你介意提供更多信息吗?

你想要json中的对象及其关系吗?

@user = User.where(:persona =&gt;'foo') @ user.to_json

答案 1 :(得分:0)

哦,这个问题很简单。我只需要包含项目。所以

User.includes(projects: :personas).find_by(guid: '...')

然后我得到了包含角色的项目。