Ruby on rails 理由:中的来源有很多

Ruby on rails 理由:中的来源有很多,ruby-on-rails,Ruby On Rails,我正在阅读RubyonRails面向服务的设计,其中包括您在图中看到的代码 我的问题是关于用户模型中的这一行的 has_many :followers, :through -> :followings, :source => :user has_many :followers, :through -> :followings, :source => :user 其中一个用户(如用户模型的一个实例)有很多追随者,他们实际上只是其他用户。所以一个用户有很多用户。这对我

我正在阅读RubyonRails面向服务的设计,其中包括您在图中看到的代码

我的问题是关于用户模型中的这一行的

has_many :followers, :through -> :followings, :source => :user
 has_many :followers, :through -> :followings, :source => :user
其中一个用户(如用户模型的一个实例)有很多追随者,他们实际上只是其他用户。所以一个用户有很多用户。这对我来说似乎很奇怪,一个用户有很多:users,当你写它的时候好像有东西应该坏掉,所以我认为doign有很多:followers…:source=>:User可能是用来阻止东西坏掉的

根据对这个问题的一个回答,这个问题是关于:source方法有很多关联的,使用:source的一个基本原理是获取看起来像这样的代码

class Newsletter
  has_many :subscriptions
  has_many :users, :through => :subscriptions
end
把它换成这个

  class Newsletter
    has_many :subscriptions
    has_many :subscribers, :through => :subscriptions, :source => :user
   end
因此,与其这样做

  Newsletter.find(id).users
人们会做得更符合逻辑(因为时事通讯有订户而不是用户)

因此,回到书中的代码,我的问题是,在用户模型中这样做的唯一理由是什么

has_many :followers, :through -> :followings, :source => :user
 has_many :followers, :through -> :followings, :source => :user
要使代码更可读,请选择User.find(id).followers?否则做这件事就没有问题了

User.rb 

has_many :users
因为如果Rails允许您这样做(即,它不会破坏应用程序),那么您会将应用程序放在哪里

User.rb
has_many :users
belongs_to :user
这对我来说似乎很奇怪,但如果:source只是为了让您编写更清晰的查询,那么这段代码应该仍然有效吗

更新:问题的关键是,是否有任何东西阻止任何人这样做

 User.rb
    has_many :users
    belongs_to :user

您是正确的,您不需要源,因为您正在删除through参数

用户没有可能的用户

用户有许多以下项,每个项都有一个用户,因此您需要:

class User < ActiveRecord::Base
  has_many :followings
  has_many :users, :through => :followings
end
class用户:以下内容
结束
请参阅此处的更多信息:


我知道用户不多:用户,但这篇文章的重点是,可以吗?说用户有很多:用户,属于:用户似乎完全不合逻辑。这是一种自引用关联,完全可以接受,它们经常被重命名以使其更符合逻辑,因为正如您所说,用户真正的意思是什么时候?例如,
不是属于:user
有很多::users
你可以做一些类似于
属于:父亲,类名:'user',外键:'father\u id'
有很多:孩子,类名:'user',外键:'father\u id'