Как написано, похоже, что вы перебираете все дружеские отношения, существующие в вашей базе данных. Вам нужно только l oop через друзей текущего пользователя.
Мало того, что это будет намного меньший список, но каждый член этого списка уже будет другом, и вам не придется спрашивать, должна ли отображаться ссылка «Добавить друга».
Рассмотрим следующее.
Сначала мы переформулируем модели немного по-другому:
class Connection < ApplicationRecord
belongs_to :user
belongs_to :friend, class_name: "User"
end
class User < ApplicationRecord
has_many :connections
has_many :friends, through: :connections, class_name: "User"
end
Затем мы создадим некоторых пользователей:
Loading development environment (Rails 6.0.2.1)
irb(main):001:0> ['User One', 'User Two', 'User Three' ].each { |u| User.create(name: u) }
...
=> ["User One", "User Two", "User Three"]
irb(main):002:0> users = User.all
...
irb(main):003:0> users.size
...
=> 3
irb(main):004:0>
Затем мы подключаем некоторых пользователей:
irb(main):004:0> Connection.create(user: User.first, friend: User.second)
irb(main):005:0> Connection.create(user: User.second, friend: User.first)
irb(main):006:0> Connection.create(user: User.second, friend: User.third)
irb(main):007:0> Connection.create(user: User.third, friend: User.second)
Теперь мы можем отобразить друзей определенного пользователя, например:
<% @user.friends.each do |friend| %>
<% friend.name %>
...
<% end %>