繁体   English   中英

如何在Rails中干燥模型?

[英]How to DRY up models in Rails?

我有一些共享许多相同代码的模型。 在Rails 3中将模型的通用代码放入正确的位置在哪里? 我已经考虑过使用初始化器,但是我对这里的最佳实践并不坚定。

很多人可能会这样回答,说将代码放入模块中并将其包含在这些类中。 没错,对于您想做的事情可能很完美,但这不是您唯一的选择。 正如Ken前面提到的,您应该发布一个特定的示例,因为它确实取决于上下文。

根据我的经验,我发现有时这些共享方法实际上属于一个单独的类。 使用单独的类而不是模块,可以更好地隔离它,从而更轻松地仅测试那些共享方法,而不必依赖于模型的上下文。 我并不是说一种方法要比另一种更好,但是这是一种选择,它可能会让您以一种新的方式来思考您的通用方法。

您可以将类似的代码放入模块中,然后将其包含在模型中。 模块可以放在例如lib/models/中。

IMO lib /确实适用于应用程序外部的库-几乎像供应商/。 它也不会在开发中自动加载。

所有应用程序逻辑都应该真正在app /中。 有时我将app / concerns用于共享的模型/控制器代码-或什至不为何使用app / models / shared /?

正如Beerlington所说,还值得重新考虑模块是否是正确的方法。 考虑您要注入的功能,并考虑单独的类是否更合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM