У меня есть модель Users
, и я хочу, чтобы пользователи могли Subscribe
на другой User
получать уведомления, когда они что-то публикуют.
Это своего рода самосоединение has_many и самосоединение many_to_many.
Мне нужно иметь возможность набирать @user.subscribers
и @user.subscriptions
.
Таким образом, отношения в каком-то смысле являются двусторонними по умолчанию. Однако, если @user1
subscribes
до @user2
, это не означает, что @user2
есть subscribed
до @user1
, однако @user2
может найти @user1
через @user.subscribers
.
Я видел Райана Бейтса Railscast о самореферентных ассоциациях. Однако это создает 1 способ самосоединения. Но я думаю, что это не исключает того факта, что между сторонами может быть два отношения.
Однако я также видел Руководство Rails по связям внешних ключей.
Я понимаю, что мог бы, вероятно, пойти по пути Райана Бейтса и просто построить два отношения, но это кажется неправильным, но я боюсь, что второй способ не позволит одному быть подписчиком, а другому быть поставщиком в каждом случае. Каков наиболее "правильный" способ сделать это?