Возможно, мне не хватает понимания относительно объектов Arel в Rails.
Вы можете сделать что-то вроде:
u = User.arel_table
then и сумасшедшие добавления запросов, такие как:
u.join(:microposts)
(неявный .on (users [: user_id])).
Но как преобразовать отношение Arel в список объектов Rails?
Обновление
Вот лучший пример.Я только что закончил учебник Майкла Хартла по Rails, где он делает нечто подобное в контроллере Micropost:
followed_ids = %(SELECT followed_id FROM relationships WHERE follower_id = :user_id)
where("user_id in (#{followed_ids}) OR user_id = :user_id", :user_id => user)
Я ненавижу необработанный SQL.Итак, я хочу провести рефакторинг, пока лучшее, что у меня есть, это:
followed_ids = Relationship.select(:followed_id).where(:follower_id => user)
where("user_id in (#{followed_ids.to_sql}) OR user_id = :user_id", :user_id => user)
Я использовал для добавления .map (&: follow_id) .join (",") к выбору отношений, который также работает, нотогда у вас есть все идентификаторы в памяти вместо краткого оператора select для обработки БД.
Моя проблема в том, что мне показалось, что мне нужно было сделать .to_sql, чтобы подать туда и сделать его счастливым, когда онесть все, что нужно, чтобы вернуть мне мои предметы.Я думаю о переходе на Squeel, который может хорошо выполнять подзапрос, но я хочу понять Арела.