助手,方法和班级组织

时间:2010-03-06 18:25:02

标签: ruby-on-rails class methods organization

当我的项目成长时,我需要编写一些方法,但是application_controller的私有方法和帮助程序没有提供足够的空间来存储所有扩展。

所以我查看了自定义类和方法,它们存储在/ lib文件夹中。

但我还有一些问题,我无法解决:

- 我什么时候应该使用“class<< self”?我有一个类,用于计算两个数字数组之间的差异,然后返回具有该数字的中间值的新数组。我以前用过这样的代码:

x = MyClass.new
x.calculate(array1, array2)

然后我将我的类'方法放入“class<< self; end”以使用没有初始化的类。这是正确的解决方案吗?

- 我应该何时使用自定义模块?是否总是需要“包含”或“要求”它们?请告诉我您项目中的模块,何时使用它们?

- 如何在控制器中调用helper的方法?我想在ajax响应中使用。例如,我使用帮助方法'users_for_output',如果有ajax调用,我的应用程序应该只将用户呈现为文本,然后用javascript处理它。

1 个答案:

答案 0 :(得分:1)

1)您不必实例化类来调用静态方法,即

MyUtil.do_something 

Vs以上。

MyUtil.new.do_something 

在我的项目中,我将这些方法保持静态。

2)当想要跨类共享一组功能时,您可以使用模块。阅读this mixin vs继承讨论。您将对何时使用模块有个好主意。

2.1)included方法用于初始化模块变量。如果您没有进行任何初始化,则无需使用它。

3)如果要将控制器方法公开为辅助方法,请使用ApplicationController类中的helper_method调用。

class ApplicationController < ActionController::Base
  helper_method :user_for_output
end