了解自定义has_many关联

时间:2016-05-15 21:56:22

标签: ruby-on-rails associations has-many-through has-many

给定用户类中的关联:

has_many :followers, through: :follows_as_fallowable,
source: :user

它返回跟随给定用户的用户实例。但是当我开始深入挖掘时,我意识到我并不完全理解为什么这个关联(user.followers)会返回User对象。
基于什么?我知道它可以通过关联名称或class_name哈希参数来推断,但在这种情况下这些都不重要。 我没有Follower模型,我没有提供class_name属性。 源参数只是说它应该在连接表中按用户列搜索 那么Rails如何知道它应该从Users表中选择?

编辑:
follow_as_followable是用户模型中的另一个关联:

has_many :follows_as_fallowable, class_name: 'Follow', as: :followable

1 个答案:

答案 0 :(得分:0)

Rails将使用follows_as_fallowable指定的关联名称(:source(例如:user模型)通过User关系获取用户的知识

虽然问题中未显示,但可能包含follows_as_fallowable的模型定义了belongs_to :user关系,因此使用source: :user指定导航的关系。

您可以在The has_many :through Association指南的Active Record Associations部分中查看更多信息。