与核心的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
我不知道为什么会这样实现,但我确信这是有原因的。