method

alias_method_chain

v3.2.13 - Show latest stable - Class: Module
alias_method_chain(target, feature)
public

Encapsulates the common pattern of:

alias_method :foo_without_feature, :foo
alias_method :foo, :foo_with_feature

With this, you simply do:

alias_method_chain :foo, :feature

And both aliases are set up for you.

Query and bang methods (foo?, foo!) keep the same punctuation:

alias_method_chain :foo?, :feature

is equivalent to

alias_method :foo_without_feature?, :foo?
alias_method :foo?, :foo_with_feature?

so you can safely chain foo, foo?, and foo! with the same feature.

2Notes

Always pass a block

Lawjoskar · Aug 29, 200810 thanks

I highly recommend always taking a block and passing it back up the chain if you use alias_method_chain, even if the original method does not. Otherwise you're keeping anyone later in the chain from adding support for blocks.

http://tech.hickorywind.org/articles/2008/08/29/always-pass-a-block-when-using-alias_method_chain

Deprecated

koppen · Apr 1, 20092 thanks

This method is now at ActiveSupport::CoreExtensions::Module#alias_method_chain