- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如果这两个方法只是同义词,为什么人们还要费心写额外的字符“_chain
”?
最佳答案
没有。 alias_method
是 Ruby 的标准方法。 alias_method_chain
是一个 Rails 附加组件,旨在简化将旧方法别名为新名称然后将新方法别名为原始名称的常见操作。因此,例如,如果您正在创建具有新功能 new_feature
的 method
方法的新版本,则以下两个代码示例是等效的:
alias_method :method_without_new_feature, :method
alias_method :method, :method_with_new_feature
和
alias_method_chain :method, :new_feature
这是一个假设的例子:假设我们有一个带有方法 rename
的 Person 类。它所做的只是获取一个像“John Doe”这样的字符串,按空格拆分,然后将部分分配给 first_name 和 last_name。例如:
person.rename("Steve Jones")
person.first_name #=> Steve
person.last_name #=> Jones
现在我们遇到了一个问题。我们不断收到未正确大写的新名称。所以我们可以写一个新方法 rename_with_capitalization
并使用 alias_method_chain
来解决这个问题:
class Person
def rename_with_capitalization(name)
rename_without_capitalization(name)
self.first_name[0,1] = self.first_name[0,1].upcase
self.last_name[0,1] = self.last_name[0,1].upcase
end
alias_method_chain :rename, :capitalization
end
现在,旧的rename
叫做rename_without_capitalization
,rename_with_capitalization
就是rename
。例如:
person.rename("bob smith")
person.first_name #=> Bob
person.last_name #=> Smith
person.rename_without_capitalization("tom johnson")
person.first_name #=> tom
person.last_name #=> johnson
关于ruby-on-rails - alias_method_chain 是 alias_method 的同义词吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034586/
我将项目升级到 Rails 5。当我运行 rspec我收到警告 DEPRECATION WARNING: alias_method_chain is deprecated. Please, use M
我正在使用 Ruby on Rails 3.2.13,我想正确使用 alias_method_chain :build, :option_name 语句,因为我遇到了一个奇怪的错误。也就是说,...
我们都知道,如果目标类是由模块组成的,你可以在新模块中调用super。但是如果它是一个类中的普通方法呢? class Logger def message(msg) puts msg
我正在开发我的网络应用程序,我想覆盖一个方法,例如,如果原始类是 class A def foo 'original' end end 我想重写 foo 方法,可以这样做 class
如果这两个方法只是同义词,为什么人们还要费心写额外的字符“_chain”? 最佳答案 没有。 alias_method 是 Ruby 的标准方法。 alias_method_chain 是一个 Rai
我尝试阅读了各种博客文章,这些文章试图解释 alias_method_chain 以及使用和不使用它的原因。我特别注意: http://weblog.rubyonrails.org/2006/4/26
NoMethodError:ActionDispatch::Request:Class 的未定义方法“alias_method_chain” 我在安装 wiselinks gem 后遇到这个问题。 R
我正在更新我的 Rails 应用程序,我需要重构使用 alias_method_chain 的方法,因为它已被弃用。消息说按照 Rails 5 的建议使用 module#prepend。这是我正在尝试
我在理解 alias_method/alias_method_chain 时遇到一点困难。我有以下代码: module ActionView::Helpers module FormHelper
我刚刚阅读有关 Rails 3 的 Gems/Plugin 开发并遇到了 this post这表示不再使用 alias_method_chain。我可以看到该方法仍然存在于 activesupport
我刚刚克隆了一个 github 仓库 https://github.com/maxitron93/p2pcollective.com ,当我在探索这个很棒的 p2p 借贷应用程序时,我遇到了一个错误
我想通过模块在模型的方法上“添加”一些代码,当它被包含时。我想我应该使用 alias_method_chain,但我不知道如何使用它,因为我的“别名方法”是以“=”符号结尾的方法之一: class M
故事模式 刚开始学习 RoR,但在短时间内我需要添加类似于 Loading images from LDAP 的功能(不兼容的版本)到我们的项目中。项目被放弃,我找不到任何相关信息/文档,所以我在这里
我想自定义方法link_to_issue的application_helper Redmine 与 alias_method_chain 的原则,以保持 Redmine 代码在插件中干净,但我遇到了问
我正在使用 twitter bootstrap 创建一个应用程序.我正在使用 Font Awesome将图标添加到各个地方,通常是链接。到目前为止,我一直在使用全局助手。这是简化版本: # app/h
我是一名优秀的程序员,十分优秀!