Вы пытались использовать встроенную в Rails функцию привязки запросов?
С http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
Это должно быть что-то вроде Person.first.friends.includes(:info)
Обновление: Ах, вы хотите, чтобы информация о Друзьях, и в модели нет связи, чтобы получить это прямо сейчас.
Похоже, вам не хватает ассоциации, чтобы получить модель Person
для друга (а не для пользователя). Что-то вроде:
class Friend < ActiveRecord::Base
belongs_to :person
belongs_to :friendly_person, :class_name => "Person", :foreign_key => "friend_id"
end
Затем вы можете использовать ассоциации, которые вы создали с включениями, аналогичными ранее Person.first.friends.includes(:friendly_person => :info)
, и это должно вернуть информацию для друга.
Еще одно обновление: для доступа к информационному столбцу для friendly_person
вы можете использовать ассоциацию. Как в friendly_person.info.description
. Вы не можете сделать это в коллекции (очевидно), у вас должен быть экземпляр человека. Что-то вроде Person.first.friends.includes(:friendly_person => :info).first.friendly_person.info.description
... но я хотел бы отметить, что этот тип кода не считается хорошей практикой.