Ruby-on-Rails: множественное has_many: возможно ли?

Можно ли иметь несколькоhas_many :through отношения, которые проходят через друг друга в Rails? Я получил предложение сделать это в качестве решения для другого вопроса, который я разместил, но не смог заставить его работать.

Друзья этоциклическая ассоциация через соединительный стол. Цель состоит в том, чтобы создатьhas_many :through заfriends_commentsтак что я могу взятьUser и делать что-то вродеuser.friends_comments чтобы получить все комментарии, сделанные его друзьями в одном запросе.

class User
  has_many :friendships
  has_many :friends, 
           :through => :friendships,
           :conditions => "status = #{Friendship::FULL}"
  has_many :comments
  has_many :friends_comments, :through => :friends, :source => :comments
end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end

Это выглядит великолепно и имеет смысл, но не работает для меня. Это ошибка, которую я получаю в соответствующей части, когда пытаюсь получить доступ к friends_comments пользователя:
ERROR: column users.user_id does not exist<br>: SELECT "comments".* FROM "comments" INNER JOIN "users" ON "comments".user_id = "users".id WHERE (("users".user_id = 1) AND ((status = 2)))

Когда я просто ввожу user.friends, который работает, это запрос, который он выполняет:
: SELECT "users".* FROM "users" INNER JOIN "friendships" ON "users".id = "friendships".friend_id WHERE (("friendships".user_id = 1) AND ((status = 2)))

Так что кажется, что он полностью забывает об оригиналеhas_many через дружеские отношения, а затем неуместно пытается использовать класс User в качестве таблицы соединений.

Я что-то не так делаю, или это просто невозможно?

Ответы на вопрос(4)

Ваш ответ на вопрос