有没有理由说ActiveRecord的爆炸方法是公开的,但没有记录,也没有在任何地方提到过?
例如,where!
,order!
,limit!
和其他人都是公开的,并且由非爆炸对手使用。
我知道他们更改了查询对象而不是克隆(并且需要谨慎),但其他爆炸方法也是如此,这些方法通常都有很好的记录。
答案 0 :(得分:4)
免责声明:我不是RoR的贡献者,所以如果有一些特定的RoR原因,我也不知道。
正如你所说,他们被非爆炸对手包裹着。例如,where
方法检查方法是否具有正确数量的参数,并将当前范围应用于该方法。此外,它还提供了文档中概述的多态行为。
我的印象是,出于抽象原因,他们就是这种方式。爆炸方法实现了较低级别的功能,而非爆炸方法提供了更加用户友好的界面。至于为什么他们没有记录但是公开的,我认为图书馆的作者想要提供使用它们的选项,如果你真的知道你正在做什么。
答案 1 :(得分:2)
他们希望保持API不可变,请参阅此提交的评论:
https://github.com/rails/rails/commit/8c2c60511beaad05a218e73c4918ab89fb1804f0
至于所有未记录的方法(使用# :nodoc:
),它们都是私有API的一部分。
您不应该使用它们,因为它们可以在没有警告的情况下被删除。
HTH