如何防止在Devise中使用sign_in许多资源?

时间:2012-11-18 23:40:34

标签: ruby-on-rails ruby-on-rails-3 devise

我有三个设计模型StudentEmployerAdmin。我希望无法同时以学生,管理员和雇主的身份登录。

如何才能成为最佳方式?

我的路线

devise_for :admins, only: :sessions

  devise_for :employers,
    controllers: {
      sessions: 'devise/employers_sessions'
    }

  authenticated :employer do
    match 'dashboard' => 'employers#dashboard'
  end

  devise_for :students,
    controllers: {
      registrations: 'devise/students_registrations',
      sessions: 'devise/students_sessions'
    }

1 个答案:

答案 0 :(得分:1)

将它们映射到单个监护人范围。这个术语很糟糕,因为设计范围显然与监狱范围不同。太糟糕了,他们没有写相应的维基条目。然而,有一个简短的说法:

  

Warden允许多个用户同时登录。见范围

我认为设计为每个模型使用不同的范围。如果您深入了解源并查看它们在设计和监护人之间的映射中设置的范围,您应该能够将这三个模型中的每一个更改为单个范围。这可以让你到达目的地。

试试

devise_for :employers, :singular => :user
devise_for :students, :singular => :user