有人能告诉我实现rails的before_filter方法的想法吗?(我想尝试编写自己的before_method)
特别是,我想知道ruby是否有一些方法来检测方法调用?
我的想法是:
第1步:alias_method :old_method, :method
第2步:alias_method :method, :wrapper_method
第3步:在wrapper_method
中,我们先做一些事情,然后致电old_method
有什么问题吗?
任何人都有更好的主意吗?
答案 0 :(得分:0)
如果您只想在调用任何其他方法之前触发方法,则只需before_filter
class UsersController < ApplicationController
before_filter :check_something
...
...
...
end
这样在调用此类的任何方法之前将调用check_something
方法。
您也可以通过设置only
或except
选项来限制此操作。像
before_filter :check_something, :only =. [:show, :edit]
在这种情况下,只会为check_something
和show
调用edit
方法。
可能需要查看before_filter和after_filter文章。