Ruby:如何拦截方法,摆弄args然后调用方法

时间:2012-06-26 06:09:09

标签: ruby activerecord patch

我需要ActiveRecord :: AttributeAssignment.assign_attributes(new_attributes,options)的不同行为。

对于我的整个Web应用程序,我想评估[并经常覆盖] new_attributes。 (我想这样做是为了支持不遵循rails形式命名约定的第三方UI小部件)。虽然这可能有点臭,但我可以编写补丁,只有在呼叫确实来自第三方表单时才会激活。

我写了一个补丁,可以覆盖正常的行为;但是,我想知道是否可以从我的补丁中调用原始方法?

当然我可以将原始assign_attributes剪切并粘贴到我的补丁中。还有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

alias或alias_method应该做的伎俩,请参阅 Ruby at about.com: aliasing

答案 1 :(得分:0)

alias_method_chain存在于这种情况。

这并不总是正确的选择,但是如果你有一个合适的用例,那么这个用例看起来很合适。