Итак, в главе 12 или в учебном пособии Хартла мы создаем возможность пользователям следить за «твиттерами» друг друга. Это моделируется как пользователи, формирующие отношения, и мы создаем модель отношений с таблицей, которая имеет follower_id и follow_id. Кроме того, в модели, мы связываем его с пользовательской модели следующим образом:Смутно о модели данных в учебном пособии Хартла в главе 12
class Relationship < ActiveRecord::Base
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
Мы также связать пользовательскую модель с моделью отношений следующим образом:
class User < ActiveRecord::Base
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower
Я запутался, почему мы необходимо иметь has_many: следующее в пользовательской модели. В учебнике говорится, что следование за кем-то является активным отношением, поэтому почему нам нужно сказать, что у пользователей много активных отношений, и пользователи также следуют за многими (что является активным отношением). Что такое has_many: после этого has_many: active_relationships не может сделать?
Также мой второй вопрос: почему role_to делится на последователя и следует за ним, а не только с пользователем. Что мы получим, используя два own_to вместо одного пользователя?
Спасибо, отличное объяснение – user2889046