Как я могу создать метод беспокойства с разными именами классов (в зависимости от контроллера) - PullRequest
0 голосов
/ 08 апреля 2020

у меня 2 контроллера. Оба очень похожи, разница только в названии класса модели.

Например:

production_controller.rb

  def new_task_order_counter(board_id)
    tasks = Production.where(board_id: board_id)
    task_order = tasks.count + 1
  end

development_controller.rb

  def new_task_order_counter(board_id)
    tasks = Development.where(board_id: board_id)
    task_order = tasks.count + 1
  end

Я хочу создать проблему, где будет один метод, заменяющий оба этих метода в моих контроллерах. Есть ли способ получить его?

1 Ответ

1 голос
/ 08 апреля 2020

Концерн - это путь к go

Создайте его в app/controllers/concerns:

module TasksConcern
  extend ActiveSupport::Concern

  included do
    def new_task_order_counter(scope, board_id)
      tasks = scope.where(board_id: board_id)
      task_order = tasks.count + 1

      # you could simplify to:
      # scope.where(board_id: board_id).count + 1 
    end
  end
end

Чтобы использовать его в вашем контроллере, добавьте эту строку:

include TasksConcern

И используйте такой метод:

order = new_task_order_counter(Development, board_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...