与核心的find_by()和FinderMethods的有什么区别?

目前我正在研究一个gem,它会覆盖ActiveRecords。 通过努力,我偶然发现了两个不同的find_by实现。 一个是核心 ,它使用某种缓存,而FinderMethods模块中的一个直接调用。 这两个实现有什么区别? 什么时候使用?

我认为就是这样:当你使用这样的东西时:

 User.find_by(...) 

调用ActiveRecord::Core#find_by ,因为Core包含在您inheritance的Base中。

但如果你这样做:

 User.first.products.find_by(...) 

ActiveRecord :: Relation(包括此处的 FinderMethods )将调用FinderMethods#find_by

我不知道为什么会这样实现,但我确信这是有原因的。