放置活动记录模型的模块的最佳位置在哪里?

时间:2013-06-24 18:02:32

标签: ruby-on-rails activerecord

一个简单的问题很奇怪,我找不到任何地方(也许我在问谷歌时写错了问题)...我在几个模型中有一些共享功能,但不以任何方式分享我我想要扩展一个实际的类,只是我希望混合使用的小实用方法。放置这些模块的“最佳实践”在哪里?

我可以把它们放在./lib中,但由于某些原因我觉得不对,我不确定。放置这些东西的典型地方在哪里?

编辑:我明白为什么./lib现在感觉不对。我没有意识到在rails 3中它默认不再自动加载./lib,所以我虽然已经转移到别处了。从某种意义上说,我认为它现在取决于你。谢谢!

3 个答案:

答案 0 :(得分:3)

我们试图“命名”这些东西并将它们放在适当的地方。例如,“关注”是mixins的通用名称,它提供特定功能作为模块mixin,因此我们将它们放在app/concerns中。 (事实上​​,我相信这是Rails 4中的默认文件夹)。您可能需要适当调整自动加载路径。

答案 1 :(得分:1)

./lib是一个合适的地方。您可以将这些类似的模块命名为./lib/active_record_mixins/

答案 2 :(得分:1)

没有“最佳”的地方,至少在你描述你的混音时。

总是由你决定;你可以在你的自动加载列表中添加你想要的任何内容。

我不明白为什么lib不“感觉正确”,它和其他任何东西一样好。某些类型的mixin有名称,如“Concertions”和“decorators”,但不清楚你所混入的内容是否属于这个范畴。

关闭lib下所有内容的自动加载以控制自动加载,而不是因为它不是放置库的好地方。对于不适合广泛的应用范围类别的模块(想想“装饰者”或“关注点”)lib似乎完全合理。

自动加载意味着您​​必须使用require而不是随处加载的所有内容;这不一定是坏事,IMO。

因为它完全取决于代码的性质,应用程序的结构以及您想要构建应用程序的方式,所以我不相信有一个开放式的“最佳”实践