Вызов метода ApplicationController в файле ruby
Как я могу вызвать метод контроллера приложения внутри файла Ruby? Я не могу использовать традиционную архитектуру MVC.
Спасибо!
3 ответа
Лучший подход к вашей проблеме - извлечь рассматриваемый метод и поместить его в модуль, например 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")
И тогда вы сделаете то же самое из вашего другого файла ruby.
Если метод должен вызываться как из контроллера приложения, так и из какого-либо другого файла ruby, то вам необходимо переместить этот метод в другой файл, возможно, в Plain Old Ruby Object (PORO). Затем, потребуйте этот файл от вашего контроллера и от любого другого файла, необходимого для его использования.
Хорошей идеей будет иметь только связанную с контроллером логику в контроллерах. Поскольку вы вызываете этот метод из чего-то, кроме контроллера, он не должен быть строго связан с логикой контроллера, поэтому это идеальная возможность для его перемещения.
Если у вас есть метод в ApplicationController
и вам нужно назвать его, вы можете использовать трюк, который:
ApplicationController.new.#method_here
Но вам лучше перенести метод в плагин и вызвать его в ApplicationController
для лучшей практики.
Больше информации здесь:
Как мне вызвать методы контроллера / представления из консоли в Rails?