我刚在Rail 3.0.0应用程序库文件夹中写了一个小模块:
module AdminFilters
def verify_is_admin
if current_user.nil? || current_user.role != User::Role::ADMIN
redirect_to :root, :alert => "You don't have enough permissions"
end
end
end
为了让我的所有控制器都可以使用它:
class ApplicationController < ActionController::Base
protect_from_forgery
require "admin_filters"
include AdminFilters
end
如果我删除了require行,rails就会这样抱怨:
uninitialized constant ApplicationController::AdminFilters
这是正常行为吗?我认为lib文件夹中的任何rb文件都是由rails自动加载的......
答案 0 :(得分:2)
是的,它是在Rails 2.x.x中自动加载的,但Rails 3不再加载来自lib/
的文件。您应该考虑将文件放入config/initializers
目录。