ユーザーと友達の関係モデルを構築しましたが、問題は、それらの関連付けで自分自身を友達にできることです。ビューとコントローラーでそれをうまく抑制しましたが、回避したいコンソールから友情を作成できるため、論理的にはモデルで抑制する必要があります。
ユーザーモデル
has_many :user_friendships
has_many :friends, through: :user_friendships,
conditions: { user_friendships: { state: 'accepted' } }
User_friendship モデル
belongs_to :user
belongs_to :friend, class_name: 'User', foreign_key: 'friend_id'
追加、ブロック、削除、友達のリクエストなど、他のすべてが完全に機能しています。私のモデルの唯一の問題は、避けたい自分自身も友達になることができることです。