在 Rails 中寻找 current_* 方法的代码部分的好地方

Looking for a good place for code part of current_* methods in Rails

问题基本上是关于好的代码风格。

目前正在处理一个大项目,该项目有很多 current_usercurrent_style 等方法,可以从控制器和视图中调用。 现在我在 ApplicationController 中定义此方法,但我认为控制器是为 'action' 方法制作的。像 'index'、'edit' 等,而不是用于定义此类附加方法。 保存这些方法的最佳位置是什么? 我在考虑助手,但他们是为了从代码中卸载视图而不是为了这些东西。 顾虑?应用控制器?帮手?

我的投票是为了关注。在您的应用程序控制器中添加此行。名称可能不是最好的,但现在就足够了。

include Concerns::Currentable

然后在 app/controllers/concerns/currentable.rb 中输入如下内容:

module Concerns::Currentable
  extend ActiveSupport::Concern

  included do
    helper_method :current_user
  end

  def current_user
    # ...
  end
  protected :current_user

  def current_method_that_isnt_a_helper
    # ...
  end
  protected :current_method_that_isnt_a_helper

end

通过这种方式,您可以明确了解控制器可用的内容和视图可用的内容,并且通过将它们标记为受保护,它们不会错误地显示为任何 catch all 路由中的操作。

它们应该在助手和控制器之间分配。

current_user 通常在控制器中定义,但也可在助手中使用(通过 helper_method)。

current_organizationcurrent_employee等也主要是控制器问题。

current_style 应该交给助手,还有 current_hatcurrent_shoes 以及与视图相关的所有内容。