我有一个运行良好的 Rails 应用程序,但我自己做这个的事实意味着一些可怜的草皮最终会看到这个并说,“你到底在想什么?你为什么把这个放在这里?! ?!”
那个可怜的、可悲的灵魂会在哪里期望看到一系列除了一个模型类之外没有任何东西使用的类?显然,我可以将它与 TheModel 类一起放入 the_model.rb 中,但这可能会超出计划的两个类......
我想到了lib,但它不需要混乱每个人的世界观......
谢谢你。
我的前任谢谢你。
我有一个运行良好的 Rails 应用程序,但我自己做这个的事实意味着一些可怜的草皮最终会看到这个并说,“你到底在想什么?你为什么把这个放在这里?! ?!”
那个可怜的、可悲的灵魂会在哪里期望看到一系列除了一个模型类之外没有任何东西使用的类?显然,我可以将它与 TheModel 类一起放入 the_model.rb 中,但这可能会超出计划的两个类......
我想到了lib,但它不需要混乱每个人的世界观......
谢谢你。
我的前任谢谢你。
将它们留在原处,the_model.rb
直到您在多个地方需要它们为止。如果您进行了不必要的重构,那么您就没有做最简单的事情。你不会需要它的。
那时,一般模式是为“关注”创建一个目录。有关更多信息,请参阅Jamis Buck 的这篇博客文章或Peter Marklund的这篇博客文章。
一般来说:在将类名转换为文件系统位置时遵循 Rails 命名约定。(即:保持班级FooHelper::Bar
在foo_helper/bar.rb
)
您可以为只使用一次的小型辅助类设置例外,并将它们与您的模型保存在同一个文件中,但这些应该是例外。(但反之亦然,不要创建一千个单行文件)
使用模块和类命名空间对您有利。如果您有一个仅由您的模型使用(并依赖于)您的模型的辅助类,请将它们放入模型类的命名空间中:
class TheModel::HelperClass
end
文件系统中的位置是app/models/the_model/helper_class.rb
不依赖于你的模型的东西可能仍然可以命名空间
module Bar
class Foo
end
end
bar/foo.rb
当然住在
你可能不应该害怕把不是模型的东西放进去lib
——这就是这个目录的用途
我想说的担忧虽然有用,但并不是真正的正确方法,因为这是一种将单个类拆分为多个文件的方法,而您似乎没有这样做。