如何使用Ruby on Rails 3创build和使用模块?
我正在使用Ruby on Rails 3,我想在模块中移动一些自定义和共享的代码。
- 我应该用什么语法来编写模块代码?
- 在我的应用程序的哪个文件夹中,我必须放置模块文件?
- 我如何将这个模块包含在一个或多个控制器类中?
- 还有什么其他的行动,我必须在我的应用程序的任何地方使用自定义模块?
- 如何从我的应用程序中调用模块中的方法?
提前致谢。
要1.模块创build/打开简单地说:
module MyModule def first_module_method end end
到2. lib
文件夹。 如果你想在lib
文件夹中组织你的模块,你可以把它们放入模块中。 例如,如果你想要一个子文件夹super_modules
你的模块将被定义如下:
module SuperModules module MyModule def first_module_method end end end
到3./5。 将模块包含在类中时,可以简单地调用模块方法,就好像它们是在类中定义的那样:
class MyClass include MyModule def some_method first_module_method #calls module method end end
4.首先,确保你的模块在你的应用程序的每一个类中都是真正需要的。 如果不是这样的话,只在需要的地方包括它,这样才不会使不需要它的类膨胀。 如果你真的需要这个模块,请在应用程序中查看类的类层次结构。 你想在所有模型中的模块? 你可以打开ActiveRecord :: Base并添加你的模块。
A> 1。 您可以使用与其他任何Ruby类相同的语法。 例如,我正在定义一个VehicleClassifer模块,它将使用classify_vehicle方法根据接收到的车轮数目作为input对车辆进行分类。
module VehicleClassifer def classify_vehicle(number_of_wheels) VehicleType.where("number_of_wheels = ?", number_of_wheels) end end
A> 2。 模块通常存储在/ lib文件夹中。
问题3,4,5或多或less具有相同的答案。 您可以使用
class SomeController < ApplicationController include VehicleClassfier def index classify_vehicle(4) end end
在你使用模块的类中,你将可以访问所有模块的方法。
此外,如果您需要在应用程序中使用模块,则可以将其包含在应用程序控制器中。