2016-05-15 47 views
0

在用户级定关联:了解定制的has_many协会

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

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

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

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

回答

0

导轨将被拾取用户的知识通过follows_as_fallowable关系,利用由:source指定的关联名,这是:user(例如User模型)。

尽管未在问题中显示,但包含follows_as_fallowable的模型可能已定义belongs_to :user关系,因此使用source: :user可指定通过其导航哪个关系。

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

+0

嗯,但follow_as_followable是另一种关联(请参阅编辑)我不介绍它在哪里引用用户? – avest