我有一些模型共享大部分相同的代码。 在Rails 3中放置模型公共代码的正确位置在哪里?我已经考虑过使用初始化程序,但是我对这里的最佳实践并不坚定。
答案 0 :(得分:2)
很多人可能会通过说将代码放在模块中并将其包含在这些类中来回答这个问题。这没错,可能对你想做的事情很完美,但这不是你唯一的选择。正如Ken在上面提到的,你应该发布一个特定的例子,因为它确实取决于上下文。
根据我的经验,我发现有时这些共享方法实际上属于一个单独的类。使用单独的类而不是模块允许您更好地隔离它,从而更容易测试那些共享方法,而不依赖于模型的上下文。我不是说一种方法比另一方更好,但它是一种选择,可能会让你以一种新的方式思考你的常用方法。
答案 1 :(得分:1)
您可以将类似的代码放入模块中,然后将其包含在模型中。例如,模块可以放在lib/models/
中。
答案 2 :(得分:1)
IMO lib /实际上适用于应用程序外部的库 - 几乎与vendor /一样。它也没有在开发过程中自动加载。
所有应用程序逻辑都应该在app /中。我有时会将app / Concer用于共享模型/控制器代码 - 或者为什么不使用app / models / shared /?
正如比尔林顿所说,重新考虑一个模块是否是正确的方法也值得重新考虑。考虑一下您尝试注入的功能,并考虑单独的类是否更合适。