gpt4 book ai didi

ruby-on-rails - rails : DRYing up before_action

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:05 26 4
gpt4 key购买 nike

我有几个 Controller :

class First < ApplicationController
before_action: do_this
before_action: do_this_too
end

class Second < ApplicationController
before_action: do_this
before_action: do_this_too
end

class Third < ApplicationController

end

其中两个 Controller 具有相同的before_action 方法。我如何干掉这段代码,以便 FirstSecond 类在一个位置使用 before_action 而不是 Third 类?

我正在考虑某种类继承解决方案。有任何想法吗?在我的真实示例中,我有更多类,每个类都有多个相同的 before_actions

最佳答案

我相信最好保持现状。如果您将这些 before_action 移动到模块或类似的东西中,这将使您的 Controller 更难阅读和理解正在发生的事情。

换句话说,您会 DRY Controller ,但也会违反 KISS 原则(保持简单)。

但是如果你仍然想这样做,方法如下:

module SharedBeforeActions
def self.included(base)
base.before_action :do_this
end

def do_this
# Your filter definition here
end
end

class Third < ApplicationController
include SharedBeforeActions
end

最后,您必须配置 Rails 以加载您的模块:

# config/application.rb
config.autoload_paths += %W(#{config.root}/lib)

关于ruby-on-rails - rails : DRYing up before_action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com