覆盖 gem 的 lib 文件夹中的私有方法

2024-04-26

spree-auth-devise gem 中有一个私有方法。该方法位于控制器 UserSessionsController 内部https://github.com/spree/spree_auth_devise/blob/master/lib/controllers/frontend/spree/user_sessions_controller.rb https://github.com/spree/spree_auth_devise/blob/master/lib/controllers/frontend/spree/user_sessions_controller.rb

我希望覆盖函数“redirect_back_or_default”。

这可能吗?

Update

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

    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 中。

谢谢你们。


当然你可以重写私有方法:

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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

覆盖 gem 的 lib 文件夹中的私有方法 的相关文章

随机推荐

  • Mandrill:渲染模板时条件合并标签不起作用

    我尝试过条件合并标签 即类似 如果 MY NUM 0 发送电子邮件时它按预期工作 但是 当我尝试渲染模板时 给定相同的 global merge vars 和 merge vars IF 合并标记块中的所有内容都保持空白 我得到了渲染的 h
  • 如何在 R 中的绘图区域之外画一条线或添加文本?

    感谢您的阅读 我发现我无法在绘图区域之外绘制线 点或添加文本 如果我从绘图内部 轴内 区域到 xlab 主标题区域绘制一条线 则仅显示绘图内的部分 在多重绘图 mfrow 中 线 点只会在最后一个活动绘图内绘制 plot 0 l locat
  • 在核心文本中查找文本的边界矩形

    我试图在核心文本中找到一行文本的边界 为简单起见 假设它只有一个字符 目前我正在使用以下方法 line CTLineCreateWithAttributedString attrString rect CTLineGetImageBound
  • iTunes Music Store Link Maker — 如何在我的应用程序中进行搜索?

    我正在编写一个音乐参考应用程序 并且对于每张专辑 从 last fm 中提取 都希望链接到 ITMS 如果专辑在商店中 iTunes 链接制作器网络工具http apple com itunes linkmaker http apple c
  • Vuetify - v-data-table 的布局问题

    我的 v 卡上有一个 Vuetify v data table 但我无法获得正确的布局 所以它是一个可配置的 2x2 布局 并且应该使用分页 无滚动
  • 在 iOS 6.0 中设置状态栏方向[重复]

    这个问题在这里已经有答案了 可能的重复 setStatusBarOrientation 动画 在 iOS 6 中不起作用 https stackoverflow com questions 12563954 setstatusbarorie
  • 如何用不同颜色绘制一条线

    我有两个列表如下 latt 42 0 41 978567980875397 41 96622693388357 41 963791391892457 41 972407378075879 lont 66 706920989908909 66
  • 自然排序 WordPress 帖子标题(按字母顺序和数字)?

    有没有可能的方法按标题对新的 WordPress 帖子查询进行排序 但按数字而不是按字母顺序排序 我有一些标题有很多按字母顺序相同的名称 然后有一个数字 所以当然 例如 WordPress 正在放置title12在之前title1 args
  • 使用 Orchard HQL API 将非 ContentPart 表连接到 ContentPart 表

    我正在尝试使用 Orchard HQL API 在两个不同的表之间执行简单的联接 问题是其中一个表不是 ContentPartTable 这可能吗 这是常规 SQL 中的样子 Select From ItemPartRecord Join
  • 如何使自定义 django 迁移可逆?

    我最初的问题是 给定一个包含 60M 行的数据库表 我需要将字段类型从布尔字段转换为整数字段 我想为此创建一个自定义的 django 迁移 如果您有比这更好的方法 请告诉我 如下所示 def make changes apps schema
  • HTML 页面中的目录选择器

    如何在 html 页面中创建目录选择器 如果我使用输入文件元素 我只能选择文件 但我需要选择目录 我需要这样做 因为用户应该在他的计算机内选择正确的路径 有什么解决办法吗 试试这个 我想它会对你有用
  • 有没有C语言的跨平台GUI库? [复制]

    这个问题在这里已经有答案了 可能的重复 GUI 应用程序的跨平台 C 库 https stackoverflow com questions 2018850 cross platform c library for gui apps 有没有
  • XMPP会议室邀请函

    在我的聊天应用程序中 我想实现群聊功能 同样 我想创建房间并向我的朋友发送加入房间的邀请 这是我加入并邀请朋友进入房间的代码 创建房间 Create Room btn CreateRoom Button findViewById R id
  • LLDB 给出局部变量的“使用未声明的标识符”错误

    在以下函数中 我无法在 LLDB 中看到 recordMap for 循环打印键 recordType 设置正确 但 p recordMap 给出错误 使用未声明的标识符 我可以在 LLDB 中很好地看到变量 recordType 所以我处
  • python 和 pandas - 如何使用 iterrows 访问列

    wowee 如何将 iterrows 与 python 和 pandas 一起使用 如果我进行行迭代 我是否应该无法使用 row COL NAME 访问 col 以下是列名称 print df Int64Index 152 entries
  • .net 中什么是类型安全?

    什么是类型安全 它是什么意思以及为什么它很重要 如果你问 类型安全 的概念是什么general意味着 它是代码的特征 允许开发人员确定某个值或对象将表现出某些属性 即属于某种类型 以便他 她可以以特定方式使用它 而不必担心意外或未定义的情况
  • 多个 Facebook 评论实例

    每当用户使用 JQuery 执行特定操作时 我都需要在页面上加载多个 Facebook 评论框 http developers facebook com docs reference plugins comments 如果我要一次加载所有评
  • 在 MediaElement.js 中的视频末尾停止而不是倒带

    我想知道如何在视频结束时停止 MediaElement js 播放器 我想知道如何在视频结束时停止 mediaelement js 播放器 我希望保留最后一帧 而不是像现在一样倒带显示第一帧 是否可以改变这种行为 我为这个问题编写了一个修复
  • 如何在制表符中显示选择编辑器文本而不是值

    As the 编辑器选择 http tabulator info docs 4 1 edit edit values steve Steve Boberson bob Bob Jimmerson jim Jim Stevenson 我可以发
  • 覆盖 gem 的 lib 文件夹中的私有方法

    spree auth devise gem 中有一个私有方法 该方法位于控制器 UserSessionsController 内部https github com spree spree auth devise blob master li