如何实现before_filter?

时间:2012-08-28 04:12:11

标签: ruby-on-rails ruby

有人能告诉我实现rails的before_filter方法的想法吗?(我想尝试编写自己的before_method)

特别是,我想知道ruby是否有一些方法来检测方法调用?

我的想法是:

第1步:alias_method :old_method, :method

第2步:alias_method :method, :wrapper_method

第3步:在wrapper_method中,我们先做一些事情,然后致电old_method

有什么问题吗?

任何人都有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

如果您只想在调用任何其他方法之前触发方法,则只需before_filter

即可执行此操作
class UsersController < ApplicationController
    before_filter :check_something
    ... 
    ... 
    ...
end

这样在调用此类的任何方法之前将调用check_something方法。

您也可以通过设置onlyexcept选项来限制此操作。像

before_filter :check_something, :only =. [:show, :edit]

在这种情况下,只会为check_somethingshow调用edit方法。

可能需要查看before_filterafter_filter文章。