如何在保持searchlogic功能的情况下覆盖/添加method_missing方法?

3

method_missing出现时,我想为我的模型添加一些行为,但我知道searchlogic已经用它来命名搜索范围。

扩展method_missing功能的正确方法是什么?有没有一种方法可以针对method_missing触发做出反应?就像在JavaScript中将函数绑定到事件一样?

1个回答

9
当你说你想要在方法缺失时触发某些操作,你是指每次还是只有当搜索逻辑未找到某些内容时?前者非常简单:
def method_missing(name, *)
  if name =~ /foo/i
    # call your custom method
    # or for example define_method
  else
    # you do not want to handle the
    # method, so fall back to standard behavior
    super
  end
end

您需要将name =~ /foo/i替换为一个条件语句,以检查您是否想处理缺失的方法。后者并不容易。我无法回答这个问题,因为我不知道搜索逻辑,但在调用自定义方法之前,您必须检查搜索逻辑是否找到了任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接