【问题标题】:Understanding customized has_many association了解自定义的 has_many 关联
【发布时间】:2016-05-15 21:56:21
【问题描述】:

用户类中的给定关联:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 好吧但是follows_as_followable是另一个关联(见编辑)我不明白它在哪里引用用户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多