2013-11-27 4 views
0

у меня есть следующие иерархии классов:Верстка 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 уровень. Что мне делать?

ответ

0

О, проблема была тривиальной. Мне просто нужно было включить проектов. Таким образом,

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

, а затем я получил проекты с включенными персонами.

0

Я думаю, что я понимаю вас, но не могли бы вы предоставить дополнительную информацию?

Вы хотите объект и его отношения в json?

@user = User.where (: персонами => 'Foo') @ user.to_json

+0

Да, а не 'User.where (: guid => '12 -2-12 ')' и получить результат 'User {projects: {personas: {persona1, ...}}}' – squixy

+0

что делает которые отображаются в консоли или браузере при запросе на этот объект? – Dap