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