Как включить вложенные и родственные связи в активную запись to_json? - PullRequest
11 голосов
/ 20 июля 2011

У меня есть модель курса с 2 связями с другой моделью, Tree:

belongs_to  :interaction_outline, :class_name => "Tree", 
                                  :foreign_key => "interaction_outline_id"
belongs_to  :token_outline, :class_name => "Tree", 
                                  :foreign_key => "token_outline_id"

Я прочитал this и смог включить ассоциации моего брата в мой контроллер.

@course.to_json(:include=> [:interaction_outline, :token_outline]

Мне также удалось получить несколько вложенных ассоциаций:

@course.to_json(:include=>{:interaction_outline=> 
                              {:include=> {:tree_node=> 
                                     {:include=> :definition}}}} )  

НО я не могу получить как одноуровневое, так и несколько вложенных включений:

@course.to_json (:include=> [{:interaction_outline=> 
                               {:include=> {:tree_node=> 
                                    {:include=> :definition}}}}, 
                            {:token_outline=> 
                               {:include=> {:tree_node=> 
                                   {:include=> :definition}}}} ] ) 
#NoMethodError (undefined method `macro' for nil:NilClass)
#the error you get when the syntax or the association is wrong

Я тоже пробовал:

@course.to_json (:include=> [:interaction_outline=> 
                               {:include=> {:tree_node=> 
                                   {:include=> :definition}}}, 
                          :token_outline=> 
                             {:include=> {:tree_node=> 
                                    {:include=> :definition}}} ] ) 
#same error

Какой правильный синтаксис здесь?

1 Ответ

29 голосов
/ 20 июля 2011

Ты действительно близко.Просто используйте хэш-нотацию вместо массива.

@course.to_json (:include=> {:interaction_outline=> 
                               {:include=> {:tree_node=> 
                                    {:include=> :definition}}}, 
                             :token_outline=> 
                               {:include=> {:tree_node=> 
                                   {:include=> :definition}}}} ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...