ruby on rails получает двухсторонние дружеские отношения в активной записи?

Я пытаюсь выяснить, как сделать взаимные двусторонние отношения, а именно:

user_id  friend_id
  1          2
  2          1

В вышеупомянутом пользователь 1 и пользователь 2 будут друзьями, если оба user_id = 1 имеет friend_id = 2 а также friend_id = 2 имеет user_id = 2 как там друг в таблице. Как посчитать все двусторонние взаимоотношения в ActiveRecord?

2 ответа

Решение

То, что вы ищете, это has_and_belongs_to_many отношения:

class User < ActiveRecord::Base
  has_and_belongs_to_many :friends, :class_name => "User",
                                    :foreign_key => "this_user_id",
                                    :association_foreign_key => "other_user_id"
end

Пример из §4.4.2.1.

Прочитайте последнюю главу учебника Михаила Хартла по Ruby on Rails: Изучите Rails by Example, где он очень хорошо объясняет подобные примеры. Здесь есть бесплатная онлайн-версия.

https://www.railstutorial.org/book/following_users

Посмотрите на последнюю главу. Я надеюсь, что это помогает.

Другие вопросы по тегам