Rails 3. Получение нескольких данных из разных таблиц

#ruby-on-rails-3

#ruby-on-rails-3

Вопрос:

Я разрабатываю API на Ruby on Rails 3, и в этом API у меня есть пользователи, и пользователи могут дружить. Это обрабатывается через контакты. Когда пользователь «запрашивает» все свои контакты, я создаю массив, который принимает идентификаторы каждого пользователя, и получаю для них объект User, чтобы я мог получить реальное имя контакта, а не только идентификатор контакта.

Это работает нормально, но мне также нужен идентификатор контакта, чтобы я мог, например, удалять контакты в приложении для iPhone, которое я разрабатываю. Как я могу это сделать? Как можно изменить приведенный ниже код, чтобы получить идентификатор контакта для каждого пользователя и пользовательского объекта?

http://pastie.org/1847350

Обновить

Текущий вывод JSON является pastie.org/1848590 . Я хочу, чтобы идентификаторы контактов были вложенным массивом основного массива пользовательских объектов. Как и последнее сообщение сейчас.

Благодарен за весь вклад!

Комментарии:

1. Можете ли вы разместить свои модели.

2. Это модель контакта: pastie.org/1847692 . Это модель пользователя: pastie.org/1847695 .

3. И что вы хотите в конце? пример: массив[user.id, contact1.id, contact2.id …]

4. Текущий результат выглядит следующим образом: pastie.org/1848590 . Я хочу, чтобы идентификатор контакта был подмассивом, как в последнем сообщении сейчас. Как я могу это сделать?

5. Укажите мне пример вывода, который вы хотите, а не текущий

Ответ №1:

Контакт также является пользователем, я думаю, вам просто нужно создать модель пользователя и добавить самоассоциацию с class_name: «contact», и это отношение будет отношением «один ко многим», которое имеет один пользователь_many contacts.

  has_many :contacts, class: "contacts", foreign_key: "contact_id"      
  

Вот приведение для этого

 http://railscasts.com/episodes/163-self-referential-association
  

после объединения вам просто нужно найти этого пользователя, а затем просто

 @users.collect{|user| user.contacts }
  

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

Приветствия