[英]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.