我正在使用Sorcery gem进行用户注册/登录。
此gem的一个功能是要验证的任何控制器上的require_login
before_filter。
我已经为我的应用登录后创建了dashboard
命名空间。例如/dashboard/reports
或/dashboard/employees
等。
路由文件:
# Dashboard
namespace :dashboard do
# Recent Activity
get '' => redirect('/dashboard/recent-activity')
get 'recent-activity' => 'activities#index', :as => 'root'
# Other dashboard controllers and actions
end
我将before_filter解压缩到它自己的控制器中,名为:
“应用程序/控制器/仪表板/ base_controller.rb”
class Dashboard::BaseController < ApplicationController
before_filter :require_login
end
我想做的是在某种测试中100%确定我在仪表板文件夹(或仪表板命名空间)中创建的任何新控制器都继承自Dashboard::BaseController
例如我的活动控制器:
class Dashboard::ActivitiesController < Dashboard::BaseController
我不想在几个月内创建控制器,并且不小心让它从ApplicationController继承,但仍然会有登录功能。
我正在使用RSpec
答案 0 :(得分:1)
不能完全相信我自己的眼睛,我自己解决了这个问题。
require 'spec_helper'
describe Dashboard::BaseController do
it "is the superclass of every dashboard namespaced controller" do
Rails.application.eager_load!
ApplicationController.descendants.each do |controller|
if controller.to_s.include?("Dashboard::") && controller.to_s != "Dashboard::BaseController"
expect(controller.superclass.to_s).to eq("Dashboard::BaseController")
end
end
end
end