У меня возникли серьезные проблемы с извлечением набора записей, которые самореферентно связаны с пользователем, чтобы показать их на странице «показать» пользователя.
Вот идея:
Пользователи (current_user
) оценивают совместимость двух других пользователей (user_a
и user_b
). Они могут оценивать совместимость как положительно, так и отрицательно: оценка двух пользователей как «совместимых» создает positive_connection
между user_a и user_b, а оценка их как «несовместимых» создает negative_connection
. Итак, есть модели для Positive_Connection, Negative_Connection и User.
Теперь мне нужно отображать только пользователей overall_positively_connected_to(@user)
(т.е. где positive_connections_to(@user).count > negative_connections_to(@user).count)
.
Вот где я должен, но я не могу двигаться дальше:
Пользовательская модель:
def overall_positive_connected_to(user)
positive_connections_to(user).count > negative_connections_to(user).count
end
def positive_connections_to(user)
positive_connections.where("user_b_id = ?", user)
end
def negative_connections_to(user)
negative_connections.where("user_b_id = ?", user)
end
Контроллер
@user.user_bs.each do |user_b|
if user_b.overall_pos_connected_to(@user)
@compatibles = user_b
end
end
Код в контроллере явно неправильный, но как мне это сделать? Я совершенно новичок в рельсах (и sql), поэтому, возможно, сделал что-то наивное.
Любая помощь будет здорово.