Я создал метод на модели micropost, который принимает массив user_ids. В этом методе я использую следующий метод "найти", чтобы вытащить все сообщения для всех пользователей в массиве.
find(:all, :conditions => ["user_id IN (?)", args.join(',')])
Но когда ActiveRecord генерирует SQL для этого запроса, он окружает список идентификаторов, разделенных комой, в одинарных кавычках. Это заставляет запрос удалять сообщения только для первого числа в одинарных кавычках вместо всех чисел.
SELECT `microposts`.* FROM `microposts` WHERE (user_id IN ('3,4,5')) ORDER BY microposts.created_at DESC
Запрос должен выглядеть так, чтобы он работал правильно, но я не могу понять, как заставить Ruby преобразовывать Array в список с разделителями комы без кавычек, я знаю, что это должно быть что-то простое, и я просто пропущу его и не может найти что-либо в Google, которое исправляет это. Все сообщения, которые я нашел, используют один и тот же метод .join(',') для объединения массива.
SELECT `microposts`.* FROM `microposts` WHERE (user_id IN (3,4,5)) ORDER BY microposts.created_at DESC
Еще один факт, который поможет вам разобраться в моей проблеме, - это массив идентификаторов, которые я перехожу в метод, строится следующим образом. Не уверен, что это повлияет на вещи.
ids = Array.new
ids.push(current_user.id)
ids = ids + current_user.friends.map(&:id)
ids = ids + current_user.reverse_friends.map(&:id)
Заранее благодарим того, кто может помочь мне вернуться на работу;)