我想使用 Rails 熟悉的助手,但功能略有改变。在我看来,我希望能够执行以下操作:
module AwesomeHelper
#... create alias of stylesheet_link_tag to old_stylesheet_link_tag
def stylesheet_link_tag(*args)
if @be_awesome
awesome_stylesheet_link_tag *args
else
old_stylesheet_link_tag *args
end
end
end
在我看来,我有三个选择:
- Monkey patching:重新打开 rails helper 模块。如果 Rails 团队更改了他们的帮助模块的名称,我的代码就会变得脆弱。并非不可克服,但并不理想。
- 使用不同的方法名:试图坚持通用的 Rails 接口可能是我的失败。我的更改可能会引起其他开发人员的困惑
- 分离方法(新):不确定这是否可行,或者它是否具有与 1 相同的缺点。将对此进行研究,但这可能是一个很好的起点。
所以这里的问题是,我是坚持使用这些次优解决方案之一,还是有另一种我没有考虑过的方法?如果我选择选项 3,有没有办法在不直接解决 rails helper 模块的情况下做到这一点?
(注意:我已经删除了上下文,因为它没有给问题增加任何内容。)