Rails:模型依赖类位置的最佳实践?

时间:2009-02-03 22:53:13

标签: ruby-on-rails ruby model dependencies location

我有一个相当好的导轨应用程序,但事实上,我自己这样做意味着一些可怜的草皮最终会看到这个并说:“你到底在想什么?为什么你这样做在这里?!?!“

那个可怜的,对不起的灵魂会期待看到一系列除了单个模型类之外什么都不使用的类?显然,我可以将它与theModel类一起放在the_model.rb中,但是这可能会超出计划的两个类......

我想过lib,但它不需要弄乱每个人对世界的看法......

谢谢。

我的前任谢谢你。

2 个答案:

答案 0 :(得分:4)

将它们留在the_model.rb,直到您需要它们在多个地方。如果你不必要地重构,你就不会做最简单的事情。 You aren't gonna need it

此时,一般模式是为“关注点”创建目录。有关详细信息,请参阅this weblog post by Jamis Buckthis one by Peter Marklund

答案 1 :(得分:0)

通常:在将类名转换为文件系统位置时,请遵循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 - 这个目录

我会说concerns虽然有用,但实际上并不是正确的方法,因为这是将单个类拆分成多个文件的一种方式这样做。