代码之家  ›  专栏  ›  技术社区  ›  Shalafister's

Rails管理员从头开始〔关闭〕

  •  0
  • Shalafister's  · 技术社区  · 8 年前

    我试图在不使用gem的情况下创建rails管理员。

    我有一个管理员登录名和名称空间。我的问题是,例如,如何区分管理员和外部管理员中的用户模型。

    假设用户模型有一个控制器,具有编辑更新新建操作。我想对管理员使用相同的操作。但我是否必须创建另一个控制器,还是应该使用相同的控制器?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Blackcoat77 Sam Tyson    8 年前

    有很多方法可以做到这一点。这取决于您的项目及其复杂性。最简单的解决方案是在用户模型中添加admin列,如下所示:

        rails generate migration AddAdminToUsers admin:boolean 
        rails db:migrate
    

    并从DB users表中为admin user分配true。例如,数据库中的第一个用户。在rails控制台中:

    rails c
    user = User.first  # The console will load first user
    user.admin = 1     # It will return true 
    user.save          # It will save and assign true to admin user
    

    然后,您只需要在 application_controller.rb 并调用该方法 is_admin? 从你的观点来看。(假设您已经将用户id存储在会话哈希中: session[:user_id] = user.id )

      helper_method :current_user, :signed_in?, :is_admin?
    
      def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
      end
    
      def signed_in?
        !!current_user
      end
    
      def is_admin?
        signed_in? ? current_user.admin : false
      end
    

    还有很多其他方法,比如添加角色,来区分管理表和用户表。如果您选择将admin和users表区分开来,则需要admin控制器和admin模型。我希望我给了你开始的想法。