gpt4 book ai didi

ruby - 覆盖 gem 的 lib 文件夹中的私有(private)方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:32 36 4
gpt4 key购买 nike

spree-auth-devise gem 中有一个私有(private)方法。该方法在 Controller UserSessionsController 内部 https://github.com/spree/spree_auth_devise/blob/master/lib/controllers/frontend/spree/user_sessions_controller.rb

我想覆盖函数“redirect_back_or_default”。

这可能吗?

更新

在混合和匹配您的答案并进行一些谷歌搜索后,我得出了这个解决方案:

    Spree::UserSessionsController.class_eval do
private
def redirect_back_or_default(default)
if default == "/admin/orders" or session["spree_user_return_to"] == "/admin/orders"
redirect_to("/admin/users")
else
redirect_to(session["spree_user_return_to"] || default)
end
session["spree_user_return_to"] = nil
end
end

我已将脚本文件放在 config/initializers 中。

谢谢大家

最佳答案

当然你可以覆盖私有(private)方法:

class Super
private def i_am_private
'private method'
end
end

class Sub < Super
private def i_am_private
'overridden ' << super
end
end

Sub.new.send(:i_am_private)
# => 'overridden private method'

关于ruby - 覆盖 gem 的 lib 文件夹中的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33592221/

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