2012-06-23 2 views
0
User 
    first_name: "Johnny" 
    age: 15 

Car 
    name: "Mazda" 

Car 
    name: "BMW" 

나는 그것이 레일에서이 작업을 수행하는 것이 가능복잡한 액티브 레코드 협회

[ {"first_name": "Johnny", "age": 15, cars: [ { "name": "Mazda" }, { "name" : "BMW" } ] } ] 

과 같이 결과를 원하십니까? 지금까지 johnny.cars을 입력하여 사용자 차량을 얻을 수 있지만 데이터 구조에 parent의 값을 보유하고 싶습니다.

나는 named_scopes와 transient 속성을 사용하는 아이디어를 가지고 놀고 있었지만 지금까지 아무런 아이디어 나 도움을받지 못했습니다.

+0

차 ans 사용자'has_many' 또는'has_many : through' 사이의 모델 연관성은 다음 서버에서 json 출력을 반환하는 데 도움이 될 수 있습니다. 그러면이 링크가 도움이 될 것입니다. 'http://apidock.com/ rails/ActiveRecord/to_json' – Viren

+0

나는 many-to-many (많은 것을 가지고있다)를 사용하고 있지만 나는 그들의 모든 자동차를 보여 주면서 모든 users를 반복하고 싶다. – lemon

+0

그래서 당신이 그다지 멈추지 않는다면 : => : 모든 사용자를 가져올 때'User.includes (: cars)' – Viren

답변

2

당신은 실제로

includes 마술이다 구문 :includes 문을 사용하여 다른 테이블의 모든 레코드를 검색 할 수 어디에 기록 할 수 있습니다 열망 부하 모든 assocaited 기록한다. 당신은 지금이 모든 사용자 레코드를로드 할

@users = User.includes(:cars)

을하고 모든 자동차 기록을 eagerload 경우 귀하의 경우에는

사용자 has_many 자동차

그래서

각 사용자 개체

그래서 루프를 통해 사용자 개체 및

<% @users.each do |user| %> 
    <%= user.cars %> 
<%end%> 

user.cars을 못해 대신이 기술은 널리 N+1을 방지하기 위해 사용되는 includes

를 사용 열망로드 그 기록을 가져옵니다 사용자의 모든 차를 가져 오기 위해 별도의 쿼리를 발생 N+1에 대한

구글이 더는

호프 알 수있는 쿼리 문제 도움말

,