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

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

Поэтому я посмотрел на пользовательские классы и методы, которые хранятся в папке /lib.

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

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

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

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

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

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

1 ответ

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

MyUtil.do_something 

Против

MyUtil.new.do_something 

В моем проекте я держу такие методы статичными.

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

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

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

class ApplicationController < ActionController::Base
  helper_method :user_for_output
end
Другие вопросы по тегам