Помощники, методы и организация занятий

Когда мой проект растет, мне нужно написать несколько методов, но закрытые методы и помощники application_controller не предоставляют достаточно места для хранения всех расширений.

Итак, я рассмотрел настраиваемые классы и методы, которые хранятся в папке / lib.

Но у меня остались вопросы, которые я не могу решить:

-Когда мне следует использовать «класс ‹< self»? У меня есть класс, чтобы вычислить разницу между двумя массивами чисел, а затем вернуть новый массив со средними значениями этих чисел. Я привык к такому коду:

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

А затем я поместил методы своего класса в «class ‹< self; end», чтобы использовать класс без инициализации. Это правильное решение?

-Когда мне следует использовать кастомные модули? Всегда ли нужно «включать» или «требовать» их? Расскажите, пожалуйста, о ваших модулях в ваших проектах, когда вы их используете?

-Как я могу вызвать вспомогательный метод в контроллере? Я хочу использовать его в ответе ajax. Например, я использую вспомогательный метод users_for_output, и если был вызов ajax, мое приложение должно отображать только пользователей в виде текста, чтобы потом обработать его с помощью javascript.


person Alex    schedule 06.03.2010    source источник


Ответы (1)


1) Вам не нужно создавать экземпляр класса для вызова статического метода, т.е.

MyUtil.do_something 

Vs.

MyUtil.new.do_something 

В своем проекте я сохраняю такие методы статичными.

2) Вы можете использовать модули, когда хотите разделить набор функций между классами. Прочтите этот миксин и обсуждение наследования. Вы получите представление о том, когда использовать модули.

2.1) Метод included предназначен для инициализации переменных модуля. Вам не нужно его использовать, если у вас ничего не инициализируется.

3) Если вы хотите предоставить метод контроллера в качестве вспомогательного метода, используйте вызов helper_method в своем классе ApplicationController.

class ApplicationController < ActionController::Base
  helper_method :user_for_output
end
person Harish Shetty    schedule 07.03.2010