Rails管理员 - 使会话助手变量可用于配置

时间:2017-04-23 01:17:25

标签: ruby-on-rails

我正在构建我的第一个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

1 个答案:

答案 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

请参阅RailsAdmin wiki

或者我认为你也可以这样做以保持旧的行为:

config.parent_controller = '::ApplicationController'

请参阅此changelog