ruby-on-rails - 我如何创建具有不同类名的关注方法(取决于控制器)
问题描述
我有 2 个控制器。两者非常相似,不同之处仅在于模型类名称。
例如:
生产控制器.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)
推荐阅读
- python - 在 Mac 上是否有一种方便的方法可以将 .py 文件打包为 Windows 系统的可执行文件?
- java - Kongchen/swagger-maven-plugin 枚举生成
- android - 在 android studio 中找不到导航抽屉布局
- visual-studio - 在将部件/任务从工具栏拖到 Visual Studio 设计图面时,我可以在哪里修改默认 ID/名称?
- laravel - 使用txt文件而不是数据库来获取当前计数器值更好吗?
- php - 如何通过 PHP 正确跟踪每次打开的邮件?
- nginx - 启动 nginx.service 失败:未找到单元
- c# - WPF - 如何在安装程序的目录中生成文件?
- objective-c - 如何在 Objective-C 中使用正则表达式获取 MFA 模式?
- php - 使用 laravel 迁移添加“更新时”和“删除时”外键约束