В Reverse _много полиморфизмов

У меня есть две модели :Пользователи и проекты. Идея состоит в том, что пользователи могут следить как за проектами, так и за другими пользователями. Естественно, пользователи и проекты являются частью полиморфного «отслеживаемого» типа. Теперь, используя пользовательскую модель, я хочу получить три вещи:

user.followed_users
user.followed_projects
user.followers

Первые две работают нормально; С третьим у меня проблемы. Это своего рода обратный поиск, когда внешний ключ становится столбцом «следующий _id» в следующей таблице, но независимо от того, как я его моделирую, я не могу заставить запрос выполняться правильно.

Модель пользователя

has_many :follows, :dependent => :destroy
has_many :followed_projects, :through => :follows, :source => :followable, :source_type => "Project"
has_many :followed_users, :through => :follows, :source => :followable, :source_type => "User"
has_many :followers, :through => :follows, :as => :followable, :foreign_key => "followable", :source => :user, :class_name => "User"

Модель следования

class Follow < ActiveRecord::Base
  belongs_to :followable, :polymorphic => true
  belongs_to :user
end

Моя таблица подписчиков имеет :идентификатор пользователя _следующий _идентификатор отслеживаемый _тип

Всякий раз, когда я запускаю запрос, я получаю :

SELECT `users`.* FROM `users` INNER JOIN `follows` ON `users`.`id` = `follows`.`user_id` WHERE `follows`.`user_id` = 7

, где он должен быть «отслеживаемый _id = 7 И отслеживаемый _тип =« Пользователь », а не «пользователь _id = 7

Есть мысли?

6
задан Flimzy 21 June 2018 в 07:32
поделиться