Rails 3 / Ruby: ActiveRecord Метод поиска IN condition Массив в параметрах одинарная кавычка проблема

Я создал метод для модели микросообщения, который принимает массив идентификаторов пользователей. В этом методе я использую следующий метод 'find', чтобы вытащить все сообщения для всех пользователей в массиве .

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 преобразовать массив в список с разделителями-запятыми без кавычек, я знаю, что это должно быть что-то простое, и я просто упускаю его и могу ' Я не нашел ничего в 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)

Спасибо заранее тому, кто поможет мне вернуться к работе;)

30
задан Schleichermann 9 August 2011 в 09:35
поделиться