Как создать и использовать модуль с помощью Ruby on Rails 3?
Я использую Ruby on Rails 3, и я хотел бы переместить некоторый пользовательский и общий код в модуль.
- какой синтаксис я должен использовать для написания кода модуля?
- в какую папку моего приложения я должен поместить файл модуля?
- как я должен включить этот модуль в один или несколько классов контроллеров?
- какие еще действия, если таковые имеются, я должен использовать пользовательский модуль в любом месте моего приложения?
- как я могу вызвать методы в модуле из моего приложения?
спасибо заранее.
2 ответов:
к 1. Модуль создается / открывается просто сказав:
module MyModule def first_module_method end endв 2. Элемент . Если вы хотите организовать свои модули в , вы можете поместить их в сами модули. Например, если вам нужна подпапка
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 endTo 4. Во-первых, убедитесь, что ваш модуль действительно необходим в каждом классе вашего приложения. Если это не так, имеет смысл включать его только там, где это необходимо, чтобы не раздувать классы, которые в любом случае не нуждаются в этом. Если вы действительно хотите, чтобы модуль был везде, включите в приложение иерархию классов ваших классов. Вы хотите модуль во всех моделях? Вы можете открыть ActiveRecord:: Base и добавить туда свой модуль.
A>1. Вы можете использовать тот же синтаксис, как и любой другой класс Рубин. Например, я определяю модуль VehicleClassifer, который будет использовать метод classify_vehicle для классификации транспортного средства на основе количества колес, которые он получает в качестве входных данных.
module VehicleClassifer def classify_vehicle(number_of_wheels) VehicleType.where("number_of_wheels = ?", number_of_wheels) end endA>2. Модули обычно хранятся в папке / lib.
вопросы 3,4,5 имеют более или менее одинаковый ответ. вы можете использовать
class SomeController < ApplicationController include VehicleClassfier def index classify_vehicle(4) end endв классе вы используете модуль и у вас будет доступ ко всем методам модуля.
кроме того, если вам нужно использовать модуль через ваше приложение, вы можете включить его в свой контроллер приложений.
Comments