Вызов метода 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?

/questions/7451597/kak-mne-vyizvat-metodyi-kontrollera-predstavleniya-iz-konsoli-v-rails/7451605#7451605

Другие вопросы по тегам