我如何创建具有不同类名的关注方法(取决于控制器)
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)
以上是关于我如何创建具有不同类名的关注方法(取决于控制器)的主要内容,如果未能解决你的问题,请参考以下文章
我如何将一个字符串逐行查找到创建它的代码行、方法名、类名和程序集?