在 Rails 中寻找 current_* 方法的代码部分的好地方
Looking for a good place for code part of current_* methods in Rails
问题基本上是关于好的代码风格。
目前正在处理一个大项目,该项目有很多 current_user
、current_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_organization
、current_employee
等也主要是控制器问题。
current_style
应该交给助手,还有 current_hat
、current_shoes
以及与视图相关的所有内容。
问题基本上是关于好的代码风格。
目前正在处理一个大项目,该项目有很多 current_user
、current_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_organization
、current_employee
等也主要是控制器问题。
current_style
应该交给助手,还有 current_hat
、current_shoes
以及与视图相关的所有内容。