Как я могу вызвать метод контроллера приложения внутри файла Ruby? Я не могу использовать традиционную архитектуру MVC.Вызов метода ApplicationController в рубиновом файле
Спасибо!
Как я могу вызвать метод контроллера приложения внутри файла Ruby? Я не могу использовать традиционную архитектуру MVC.Вызов метода ApplicationController в рубиновом файле
Спасибо!
Если метод предназначен для вызова как из контроллера приложения, так и из другого рубинового файла, вам необходимо перенести этот метод на другой файл, возможно, на объект Plain Old Ruby Object (PORO). Затем требуйте, чтобы файл с вашего контроллера и из любого другого файла должен был его использовать.
Это хорошая идея иметь логику контроллера только в контроллерах. Поскольку вы вызываете этот метод из чего-то помимо контроллера, он не должен быть строго логикой, связанной с контроллером, поэтому это идеальная возможность для его перемещения.
Если у вас есть метод в ApplicationController
и вам нужно вызвать его, вы можете использовать трюк, который:
ApplicationController.new.#method_here
Но лучше переместить метод в плагин и назвать его в ApplicationController
для передовой практики.
Больше информации здесь:
How do I call controller/view methods from the console in Rails?
Лучший подход к вашей проблеме, чтобы извлечь этот метод в вопросе и поставить его в модуле, как lib/my_utils.rb
. После этого вы можете требовать этого файла, в котором когда-либо вам это нужно:
# lib/my_utils.rb
module MyUtils
def the_method_you_were_talking_about(args)
.. code ..
end
end
Тогда:
# application_controller.rb
require 'lib/my_utils.rb'
MyUtils.the_method_you_were_talking_about("and any data you need to pass to it")
И тогда вы могли бы сделать то же самое с другим файлом рубин.
Вы имеете в виду, что у вас есть приложение Rails, которое имеет метод в ApplicationController и вы хотите вызвать метод в этом классе из рубинового файла в проекте, но не часть цикла запроса? Просьба уточнить вопрос. –
Не могли бы вы показать нам свой ApplicationController, описать, что такое метод, и контекст, в котором запускается другой рубиновый файл? –