Ruby on rails 如何对具有特定命名模式的方法使用回调?

Ruby on rails 如何对具有特定命名模式的方法使用回调?,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,我试图找到一种漂亮的方法来声明对具有特定名称模式的方法的回调。 例如: class UsersController < ApplicationController before_action :set_venue, only: [:get_location, :get_date, :get_time, :sort_teams, :get_teams] end class UsersController

我试图找到一种漂亮的方法来声明对具有特定名称模式的方法的回调。 例如:

class UsersController < ApplicationController
  before_action :set_venue, only: [:get_location, :get_date, :get_time, :sort_teams, :get_teams]
end
class UsersController
或仅
外有很多方法可以声明

如何在操作之前执行类似于
的操作:仅:[:获取*,:按*对团队排序]
如果:选项:

before_action :set_venue, 
  if: proc { |c| c.action_name =~ /^(get|sort_teams_by)_*/ }
但这似乎是一个聪明的解决方案,可以合法化一些非常难闻的代码。控制器中所有这些操作的名称都是一个死角,因为您有一些非常不安全的路由,比如
users/1/get\u location
,而不是
users/1/location
users/1/teams

它还告诉我们,该控制员可能有办法承担许多责任,并处理多种不同的资源。例如,
users/1/get\u teams
实际上应该是
users/1/teams
并由
users::teamscocontroller
处理

见:

如果:选项:

before_action :set_venue, 
  if: proc { |c| c.action_name =~ /^(get|sort_teams_by)_*/ }
但这似乎是一个聪明的解决方案,可以合法化一些非常难闻的代码。控制器中所有这些操作的名称都是一个死角,因为您有一些非常不安全的路由,比如
users/1/get\u location
,而不是
users/1/location
users/1/teams

它还告诉我们,该控制员可能有办法承担许多责任,并处理多种不同的资源。例如,
users/1/get\u teams
实际上应该是
users/1/teams
并由
users::teamscocontroller
处理

见:


向上帝发誓,我回来时使用proc和条件写了相同的答案。但我有一个问题:它会阻碍性能吗?不,我真的无法想象它会对性能产生任何影响。不过还是很臭。无论何时,当你用Ruby中的
get\uu
set\u
预处理任何事情时,你的蜘蛛感觉应该是通过屋顶的。它不是处理不同的资源,而是处理单个post的电报机器人的控制器。创业板所有者建议这样写。这里的源代码:请随时告诉我如何使它更安静。感谢您的帮助。如果您必须匹配现有的API,这是一件事,但您的内部代码布局肯定不需要受到影响,并且对于控制器来说,该代码有很多逻辑。而且很难测试。Brandon Keepers为类制定了一个非常好的试金石测试——如果你不能在不使用“and”或“or”或“you have to more.what't under。你能用源代码中的一些例子来详细说明你的话吗?我发誓,我回来是为了用proc和条件来写同样的答案。但我有一个问题:它会阻碍性能吗?不,我真的无法想象它会对性能产生任何影响。不过还是很臭。无论何时,当你用Ruby中的
get\uu
set\u
预处理任何事情时,你的蜘蛛感觉应该是通过屋顶的。它不是处理不同的资源,而是处理单个post的电报机器人的控制器。创业板所有者建议这样写。这里的源代码:请随时告诉我如何使它更安静。感谢您的帮助。如果您必须匹配现有的API,这是一件事,但您的内部代码布局肯定不需要受到影响,并且对于控制器来说,该代码有很多逻辑。而且很难测试。Brandon Keepers为类制定了一个非常好的试金石测试——如果你不能在不使用“and”或“or”或“you have to more.what't under。你能用源代码中的一些例子详细说明你的话吗?