当method_missing
出现时,我想为我的模型添加一些行为,但我知道searchlogic已经用它来命名搜索范围。
扩展method_missing
功能的正确方法是什么?有没有一种方法可以针对method_missing
触发做出反应?就像在JavaScript中将函数绑定到事件一样?
当method_missing
出现时,我想为我的模型添加一些行为,但我知道searchlogic已经用它来命名搜索范围。
扩展method_missing
功能的正确方法是什么?有没有一种方法可以针对method_missing
触发做出反应?就像在JavaScript中将函数绑定到事件一样?
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
替换为一个条件语句,以检查您是否想处理缺失的方法。后者并不容易。我无法回答这个问题,因为我不知道搜索逻辑,但在调用自定义方法之前,您必须检查搜索逻辑是否找到了任何内容。