ruby-on-rails-3 - rails modules
¿Cómo crear y usar un módulo usando Ruby on Rails 3? (2)
Estoy usando Ruby on Rails 3 y me gustaría mover algunos códigos personalizados y compartidos en un módulo.
- ¿Qué sintaxis debo usar para escribir el código del módulo?
- ¿En qué carpeta de mi aplicación tengo que colocar el archivo del módulo?
- ¿Cómo tengo que incluir ese módulo en una o más clases de controlador?
- ¿Qué otra acción, si hay alguna, debo usar el módulo personalizado en cualquier lugar de mi aplicación?
- ¿Cómo puedo llamar a métodos en el módulo desde mi aplicación?
Gracias por adelantado.
A> 1. Puede usar la misma sintaxis que cualquier otra clase de ruby. Por ejemplo, estoy definiendo un módulo VehicleClassifer que va a utilizar el método classify_vehicle para clasificar un vehículo en función de la cantidad de ruedas que recibe como entrada.
module VehicleClassifer
def classify_vehicle(number_of_wheels)
VehicleType.where("number_of_wheels = ?", number_of_wheels)
end
end
A> 2. Los módulos generalmente se almacenan en la carpeta / lib.
las preguntas 3,4,5 tienen más o menos la misma respuesta. puedes usar
class SomeController < ApplicationController
include VehicleClassfier
def index
classify_vehicle(4)
end
end
en la clase estás usando el módulo y tendrás acceso a todos los métodos del módulo.
Además, en caso de que necesite usar un módulo en su aplicación, puede incluirlo en su controlador de aplicación.
Para 1. Se crea / abre un módulo simplemente diciendo:
module MyModule
def first_module_method
end
end
Para 2. La carpeta lib
. Si desea organizar sus módulos en la carpeta lib
, puede colocarlos en los módulos. Por ejemplo, si quisiera una subcarpeta super_modules
sus módulos se definirían de la siguiente manera:
module SuperModules
module MyModule
def first_module_method
end
end
end
A 3./5. Al incluir el módulo en una clase, simplemente puede llamar a los métodos de los módulos como si estuvieran definidos dentro de la clase:
class MyClass
include MyModule
def some_method
first_module_method #calls module method
end
end
Para 4. En primer lugar, asegúrese de que su módulo sea realmente necesario en todas las clases de su aplicación. Si no es así, tiene sentido incluirlo solo donde se necesita para no inflar las clases que no lo necesitan de todos modos. Si realmente quieres el módulo en todas partes, incluye mirar la jerarquía de clases de tus clases en la aplicación. ¿Quieres el módulo en todos los modelos? Puede abrir ActiveRecord :: Base y agregar agregar su módulo allí.