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

Car 
    name: "Mazda" 

Car 
    name: "BMW" 

Я хотел бы результаты, которые выглядят каккомплекс Active Record Ассоциация

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

Можно ли сделать это в Rails? Пока я могу получить автомобиль Пользователи, набрав johnny.cars, но я бы хотел, чтобы структура данных также сохраняла значения parent.

Я играл с идеей использования named_scopes и переходных атрибутов, но не повезло, пока какие-либо идеи/помощь очень ценятся.

+0

Какова ваша модель отношений между автомобилем и пользователем 'has_many' или' has_many: through', тогда мы можем помочь также искать возврат json-вывода с сервера, тогда я предполагаю, что эта ссылка может помочь 'http://apidock.com/ rails/ActiveRecord/Serialization/to_json' – Viren

+0

Я использую много-ко-многим (имеет много сквозных), но я хотел бы зациклиться на всех Пользователях, показывая все их Автомобили. – lemon

+0

, так что остановите вас, а затем вы не попробовали: includes =>: автомобили, когда выбрали все Пользователь-пользователь вроде этого 'User.includes (: cars)' – Viren

ответ

2

Вы могли бы на самом деле получить все записи из другой таблицы с помощью :includes о

includes волшебно синтаксис где вы можете жаждущих нагрузки всех assocaited записей записи.

Пример В вашем случае

has_many Пользователь автомобили

так что если вы

@users = User.includes(:cars)

Теперь это будет загружать все записи пользователей и eagerload все автомобили рекорды каждый объект пользователя

так что если вы пройдете через объект пользователя и сделать

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

user.cars обыкновения стрелять отдельный запрос для извлечения всех автомобилей для пользователей вместо этого он будет получать эти записи нетерпеливых загруженные с помощью includes пункта

Этого метод широко используется, чтобы избежать N+1 проблема запроса

Google для N+1, чтобы узнать больше на нем

Надеется, что это Помощь

Смежные вопросы