Rails 3:a​​lias_method_chain 仍然使用吗?

2023-12-10

我刚刚读到有关 Rails 3 的 Gems/Plugin 开发的内容,然后遇到了这个帖子这表示不再使用 alias_method_chain 。我可以看到该方法仍然存在于 activesupport-3.0.0/lib/active_support/core_ext/module/aliasing.rb 中。

我还应该在 Rails 3 中使用 alias_method_chain 吗?

Is this仍然反映了 Rails 3 中想要修改 ActiveRecord 的 gem/插件的最佳实践吗?


不,它已被模块中方法重写的巧妙使用所取代,并且super关键词。

基本上,您在包含的模块中定义原始函数,并在另一个包含的模块中覆盖它。你打电话时super在重写函数中,它调用原始函数。但有一个问题。您必须包含扩展模块after包括基本模块,并按照您希望链接发生的顺序。

class Something
  module Base  
    def my_method
      # (A) original functionality
    end
  end

  module PreExtension
    def my_method
      # (B) before the original
      super # calls whatever was my_method before this definition was made
    end
  end

  module PostExtension
    def my_method
      super # calls whatever was my_method before this definition was made
      # (C) after the original
    end
  end

  include Base # this is needed to place the base methods in the inheritance stack
  include PreExtension # this will override the original my_method
  include PostExtension # this will override my_method defined in PreExtension
end

s = Something.new
s.my_method 
#=> this is a twice extended method call that will execute code in this order:
#=> (B) before the original
#=> (A) the original
#=> (C) after the original

瑞安·贝茨铁路广播谈论如何在 Rails 路由代码中使用它。我建议观看它以及他的其他截屏视频。他们有能力将一位针织祖母转变为 Rails 大师。

PS:信用归于Peeja纠正我原来答案中的一个根本错误。谢谢。

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

Rails 3:a​​lias_method_chain 仍然使用吗? 的相关文章

  • 为 RoR 中的每个用户创建新的 URL 路径

    如何在 Ruby on Rails 中实时创建新的 URL 路径 例如 我希望我的用户拥有 name XXX com 或 XXX com name 仅供参考 我在 Heroku 上托管代码 看看 subdomain fu 插件 https
  • 在 Sinatra 中运行后台进程

    我有 Sinatra Rails 应用程序和一个启动一些漫长过程的操作 通常我会为后台作业排队 但这种情况太简单了 后台进程很少启动 所以队列是一个开销 那么如何在没有队列的情况下运行后台进程呢 get build logs project
  • 仅针对 Rake 任务运行初始化程序

    我希望在执行 Rake 任务时运行某个初始化程序 但在运行 Rails 服务器时不运行 区分 Rake 调用和服务器调用的最佳方法是什么 Rake 允许您指定任务的依赖关系 最好的建议操作是将特定于 rake 的初始化放入其自己的任务中 而
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • 如何配置database.yml以部署到Heroku

    我最近升级到了最新版本的Rails 并且不明白如何将应用程序部署到Heroku 这是我的database yml file default default adapter postgresql pool 5 timeout 5000 dev
  • 高效地重新安排 ActiveJob (resque/sidekiq)

    我正在玩Rails 4 2应用程序使用ActiveJob受支持resque sidekiq用于电子邮件安排 当用户创建时事通讯活动时 会创建一个新作业并安排在特定日期 这一切都很好 但是当用户更改交货日期时会发生什么 在这种情况下 每个作业
  • MySQL正则表达式:如何将字符串中的数字与\d匹配?

    我有一个专栏release date它以字符串格式存储日期 不是 DATETIME 格式 因为它们有时可以是任何其他字符串文字 我想根据给定的月份和年份查找任意日期的所有记录 尝试遵循但对我不起作用 gt Post find all con
  • Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

    我在使用 UTF 8 字符时遇到一些问题 这是 db seeds rb User create username eml first name last name ck email email protected cdn cgi l ema
  • Travis-CI 上的 Rails 数据库设置

    我正在尝试在 Rails 项目上使用 Travis 持续集成 文档说 对于 SQLite3 测试数据库必须配置如下 test adapter sqlite3 database memory timeout 500 但我想保留本地测试的默认配
  • Rails 中的字母分页

    我正在寻找 Rails 的宝石用于字母分页 我希望我可以在结果中找到第一个字母的列表 我的意思是 如果没有以 a 开头的行 我不希望 a 显示在分页链接上 这种宝石已经存在了吗 提前致谢 这根本不难创建 例如 如果您有一个find 也许像
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi
  • 我可以使用同一个 ActionMailer 从不同地址发送电子邮件吗

    我正在为我的 Rails 2 3 9 应用程序使用 ActionMailer 当我使用以下方式发送电子邮件时 deliver user invite config def user invite subject content subjec
  • 如何在不初始化Rails的情况下从schema.rb创建数据库?

    我正在尝试从 schema rb 创建所有表 我使用命令 rake db schema load 但是 这失败了 因为在我的一个初始化程序中 它引用了一个显然不存在的模型 表 因为数据库为空 我可以注释掉这些行 然后再次运行 schema
  • Ruby:如何在不创建新实例的情况下检查实例方法的参数?

    在 Ruby 1 9 2 中 您可以使用 method symbol 检查任何方法的参数 如何在不创建新车的情况下检查 Car initialize 方法 class Car def initialize fuel type passeng
  • ruby 字符串到哈希值的转换

    我有一个这样的字符串 str uu p xx m yy n zz m 我想知道如何将给定的字符串转换为哈希值 即我的实际要求是 有多少个值 符号之前 有m n和p 我不需要计数 我需要一个精确的值 这样输出效果会更好 m gt xx zz
  • 回形针/乘客 NotIdentifiedByImageMagickError:

    当我尝试上传照片时红宝石 on Rails http en wikipedia org wiki Ruby on Rails using 回形针 http github com thoughtbot paperclip在我的本地机器上它运行

随机推荐

  • 了解分支预测

    有一些关于分支预测的疑问我无法自信地弄清楚 假设我必须使用静态分支预测器 分支预测应该发生在管道的哪个阶段 如何知道预测出错了 数据路径如何知道发生了错误预测 如果它知道发生了错误预测 它如何发送信号以占用未占用的分支 出了问题后 我必须占
  • 在通过代码连接的两个表之间使用更新时出错

    是以下 python pandas DataFrame ID country money code money add other time 832932 Other NaN 00000 NaN N2 N2 N4 0 days 01 37
  • 如何使用值从字典中删除条目

    我有一个字典集合如下 mydic addvalue key1 val1 mydic addvalue key2 val1 mydic addvalue key3 val1 mydic addvalue key4 val2 mydic add
  • 从嵌入式网络聊天发送事件

    我正在尝试从嵌入式网络聊天发送和接收事件 该网络聊天遵循本示例中的网站代码https github com ryanvolum backChannelBot并且机器人实现了来自的代码Bot框架获取内嵌聊天控制页面的ServiceUrl埃泽奎
  • Java - 冻结鼠标

    有没有办法在Java中将鼠标锁定在一个位置一段时间 我试过这个 while timer true Robot bot new Robot bot mouseMove x y 但是 当用户移动鼠标时 它会令人不愉快地来回跳跃 从用户拖动的位置
  • .Net Mvc:如何触发 Application_Error() 管理它们的错误?

    我管理我的所有应用程序错误Application Error in 全局 asax protected void Application Error object sender EventArgs e Exception exception
  • 以编程方式关闭设备

    我正在编写一个应用程序 旨在在一种特定的设备型号 运行基于 Amlogic 的固件的 Android 机顶设备 上运行 我具有 root 功能 并且我的应用程序是使用固件证书签名的 我的应用程序是设备的主要焦点 如果能够启动完全关闭电源将会
  • 对父级之后的每个子级进行排序

    我有一个这样的数组
  • 在Javascript中获取多维数组中元素的坐标[重复]

    这个问题在这里已经有答案了 我想在多维数组中放置一个元素 如下所示 var letterVariations 0 1 2 3 4 5 6 7 8 9 A a B b C c D d E e F f G g H h I i J j K k L
  • 在 vuejs 应用程序中运行时 axios 响应标头丢失数据

    我有简单的 vuejs 应用程序 在 main js 中我有类似的内容 import Vue from vue import App from App vue import router from router routes import
  • Jenkins pipeline sh 在 Windows 上失败并显示“无法运行程序 nohup”

    我有 Windows 10 我想使用 bash for Ubuntu for Windows 从 Jenkins 管道执行 Jenkinsfile 中的 sh 命令 但它不起作用 我的 Jenkins 管道有以下阶段 stage sh ho
  • Firebase 深层链接 Web URL 查询为空 - iOS

    我在接收带有新自定义网址的 Firebase 动态链接时遇到问题 我创建了一个 abc0 page link 我设置了所有内容以从应用程序的代码中创建它 但是在接收时 我在日志中收到以下消息 Firebase Analytics I ACS
  • Java 自动完成文本字段(Ajax 风格)

    我需要创建一个 JTextField 或任何可以输入内容的组件 并且它必须提供动态填充值的列表 当我输入新字符时 命题会更新 就像 Ajax 一样 一个特殊性是用户只能选择已填充的值 我需要让我的用户从数据库中选择现有城市 使用 Swing
  • 如何创建强类型 BeginForm?

    我见过一些使用 HTML BeginForm 语法的例子 Html BeginForm
  • Woocommerce 单一产品自定义选项卡上显示带有所见即所得字段的元框

    需要在单个产品页面上显示相关产品中的自定义字段 我想添加一个元框到Add New Product字段并在评论下的单个产品页面上的自定义选项卡上显示结果 我尝试使用代码 但页面上没有显示任何内容 添加额外的产品选项卡可以帮助我添加额外的信息
  • MS Word Viewer C# .NET 自动化

    是否可以自动化执行以下操作 引用 MS Word Viewer 以编程方式打开文档然后打印它 理想情况下是 C 我猜如果可以打开它 那么很可能可以打印它 我尝试在 Visual Studio 中添加对 COM 对象的引用 MS Office
  • 如何根据“收件人”电子邮件地址在 VBA 中过滤 Outlook 视图

    我在 Outlook 中有一个视图 其中包含邮箱中的 发件人 和 收件人 电子邮件 我可以非常轻松地在 Outlook 搜索框中输入电子邮件地址 视图将立即被过滤以显示来自该电子邮件地址的所有电子邮件 也许还包括主题或正文中包含此电子邮件地
  • 获取客户端的IP地址和计算机名称?

    我有一个 ASP Net 4 0 应用程序 发布在公司 Intranet 网络的 IIS 7 0 服务器上 我想将客户端的 IP 地址保存在我的数据库中 所以我想获取客户端的IP地址和计算机名称 我尝试了互联网搜索的方法 但我得到 服务器
  • 如何从ng-grid获取单元格值

    我是 AngularJS 的初学者 我研究了ng grid的demo 有一个问题 索引 html
  • Rails 3:a​​lias_method_chain 仍然使用吗?

    我刚刚读到有关 Rails 3 的 Gems Plugin 开发的内容 然后遇到了这个帖子这表示不再使用 alias method chain 我可以看到该方法仍然存在于 activesupport 3 0 0 lib active sup