我如何创建具有不同类名的关注方法(取决于控制器)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何创建具有不同类名的关注方法(取决于控制器)相关的知识,希望对你有一定的参考价值。

我有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

我想引起关注的是,在我的控制器中将有一种方法替代这两种方法。有办法吗?

答案

关注是要走的路

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)

以上是关于我如何创建具有不同类名的关注方法(取决于控制器)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 DOM 获取内容

多个操作取决于传递的对象的类型

我如何将一个字符串逐行查找到创建它的代码行、方法名、类名和程序集?

Windows server 2012 角色转移及删除域控方法

如何附加滚动视图委托方法?

不同程序集,名称空间类名和方法签名都一样的方法,如何调用