我正在构建我的第一个rails应用程序,并且不知道如何为RailsAdmin.config提供帮助程序实例变量。如果当前登录的用户具有管理员权限,我想只允许访问rails admin。我不确定RailsAdmin.config代码应该去哪里,但我目前在environment.rb中有它。当我登录时,我正在为current_user获取未定义的局部变量或方法错误。谢谢你的帮助。
的environment.rb
RailsAdmin.config do |config|
config.authorize_with do
redirect_to main_app.root_path unless current_user.admin?
end
end
sessions_helper.rb
module SessionsHelper
def login(user)
session[:user_id] = user.id
end
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
end
end
end
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
include SessionsHelper
end
答案 0 :(得分:1)
RailsAdmin不再从其基础ApplicationController
继承其控制器(this commit)。您可以在config/initializers/rails_admin.rb
require "rails_admin/application_controller"
module RailsAdmin
class ApplicationController < ::ApplicationController
protect_from_forgery with: :exception
include SessionsHelper
end
end
或者我认为你也可以这样做以保持旧的行为:
config.parent_controller = '::ApplicationController'
请参阅此changelog