Неинициализированная константа Admin::ModeratorsController::ModeratorInteractor
Привет, я работаю над проектом RoR с ruby-2.3.0 и rails 4. Я пытаюсь вызвать метод интерактора из контроллера. Мой контроллер находится внутри каталога Admin следующим образом:
class Admin::ModeratorsController < Admin::ApplicationController
include Interactor
def index
ModeratorInteractor.find_abc(params)
end
end
Мой интерактор:-
# frozen_string_literal: true
class ModeratorInteractor
def self.find_abc(params)
User.all
end
end
Когда я запускаю свой код, я получаю сообщение об ошибке uninitialized constant Admin::ModeratorsController::ModeratorInteractor
, Я также пытаюсь включить Interactor:-
include Interactor
Пожалуйста, помогите, как это исправить. Заранее спасибо.
2 ответа
Вам нужно определить ModeratorInteractor
как module
чтобы включить его в свой контроллер:
module ModeratorInteractor
def self.find_abc(params)
User.all
end
end
Затем вам нужно убедиться, что модуль загружен правильно:
# in application.rb
config.autoload_paths += %W("#{config.root}/lib") # path to your module
Или вы также можете использовать require
вместо autoload_paths
:
require "#{Rails.root}/lib/modeator_interactor"
Затем в вашем контроллере вы можете включить его:
include ModeratorInteractor
Во-первых, вам нужноinclude Interactor
в вашейModeratorInteractor
, также необходимо определитьcall
метод, неfind_abc
который не будет работать, и он выдаст ошибкуundefined method
, так что ваш окончательный интерактор будет выглядеть так
# frozen_string_literal: true
class ModeratorInteractor
include Interactor
def self.call
params = context.params
end
end
и вы будете называть это как
ModeratorInteractor.call(params: params)
Вуаля.