#ruby-on-rails-3
#ruby-on-rails-3
Вопрос:
Я разрабатываю API на Ruby on Rails 3, и в этом API у меня есть пользователи, и пользователи могут дружить. Это обрабатывается через контакты. Когда пользователь «запрашивает» все свои контакты, я создаю массив, который принимает идентификаторы каждого пользователя, и получаю для них объект User, чтобы я мог получить реальное имя контакта, а не только идентификатор контакта.
Это работает нормально, но мне также нужен идентификатор контакта, чтобы я мог, например, удалять контакты в приложении для iPhone, которое я разрабатываю. Как я могу это сделать? Как можно изменить приведенный ниже код, чтобы получить идентификатор контакта для каждого пользователя и пользовательского объекта?
Обновить
Текущий вывод 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 }
возвращает вам список контактов, которые, я думаю, могли бы вам помочь.
Приветствия