Вызов метода другого контроллера

У меня есть контроллеры под названием " Children и Father и Mother где мне нужно вызвать метод FatherController и MotherController из ChildrenController.

Мне нужно передать данные JSON в оба контроллер (не в тот же запросе) get_details метода из set_details метода ChildrenController. Я собираюсь назвать любой из методов контроллеров, основанный на некоторых условиях.

В обоих контроллерах нет пути для метода get_details. Мне не нужны вспомогательные методы для написания.

Мне нужно вызвать несколько методов Controller, а не Inheriting.

Контролер отца

class FatherController < ApplicationController

  def get_details(data)
    ##
    ## I need to do some operation with the 'data' received from children controller.
  end

end

Контроллер мамы

class MotherController < ApplicationController

  def get_details(data)
    ##
    ## I need to do some operation with the 'data' received from children controller.
  end

end

Детский контроллер

class ChildrenController < ApplicationController

  data = {
      "id":"2",
      "expiry_date":"25-09-2016"
  }.as_json

  def set_details        
    ## get_details(data) -> FatherController
    ## get_details(data) -> MotherController
  end

end

Пожалуйста, помогите, как это сделать или предложите мне, если есть какой-либо другой способ сделать это.

Благодарю.

3
10 июня '16 в 16:54
источник поделиться
3 ответов

Легко. Сделать метод .self

class MotherController < ApplicationController
  def self.get_details(data)
  end
end 

А потом:

class ChildrenController < ApplicationController
  def set_details        
    MotherController.get_details(data)
  end
end
12
10 июня '16 в 17:38
источник

Удалите эту логику с контроллера или определите ее в ApplicationController, из которой все ваши контроллеры наследуются.

2
10 июня '16 в 18:44
источник

Почему бы вам просто не написать свою функцию или метод в МОДЕЛЬ

class MotherModel < ApplicationRecord

     def self.mothermodel_method
     end
end


class ChildController < ApplicationController
     def access_mother_method
         @result_from_mother_method = MotherModel.mothermodel_method
     end
end
1
26 июля '17 в 3:04
источник

Посмотрите другие вопросы по меткам или Задайте вопрос