gpt4 book ai didi

ruby-on-rails - ActiveRecord::Associations::CollectionProxy 从哪里获取.each 实例方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:00 24 4
gpt4 key购买 nike

假设我有模型 Topics 和 Posts,其中 Topic has_many :posts 和 Post belongs_to :topic。此时我的数据库中已经有了一些东西。

如果我进入 Rails 控制台并输入

Topic.find(1).posts

我相信我得到了一个 CollectionProxy 对象。

=> #<ActiveRecord::Associations::CollectionProxy [#<Post id:30, ......>]>

我可以对此调用 .each 以获得枚举器对象。

=> #<Enumerator: [#<Post id: 30, ......>]:each>

我对 CollectionProxy 如何处理 .each 感到困惑。我意识到它在某些时候是继承的,但我一直在阅读 API 文档,他们并没有说得很清楚 CollectionProxy 是从什么继承的,除非我遗漏了一些明显的东西。

This page似乎并没有告诉我太多信息,this page 也没有。 .

最佳答案

ActiveRecord::Associations::CollectionProxy is inherited from Relation , Relationeach 和许多其他方法转发给 to_a

来自 activerecord/lib/active_record/relation/delegation.rb#L45

delegate :to_xml, :to_yaml, :length, :collect, :map, :each, :all?, :include?, :to_ary, :join, to: :to_a

参见 Understanding Ruby and Rails: Delegate以获得有关 delegate 工作原理的精彩解释。

关于ruby-on-rails - ActiveRecord::Associations::CollectionProxy 从哪里获取.each 实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com