0

我有两个表:workers_table 和 admins_table。

我有两个控制器,我使用devise(sign_in,sign_up ...)。

我用:

before_filter :authenticate_user!

在工人和管理员的控制器中。

假设我有登录用户的电子邮件:

@email = current_user.email

我想检查在哪里找到@email:

  • 如果在workers表中找到它,则将他重定向到workers的index.html.erb(并且他无法进入管理员的index.html.erb)。

  • 如果在 admins 表中找到,则将他重定向到 admins 的 index.html.erb(他无法进入 worker 的 index.html.erb)。

我知道如何检查用户是否属于workers_table 或admins_table。

但是我应该在哪里检查用户属于哪个表?我应该定义另一个控制器吗?

请指导我。

4

1 回答 1

1

application_controller.rb 是定义 authenticate_user 功能的好地方

如果你有的话,另一个地方可能是 session_controller.rb

至少你可以为你的 admins_controller 添加一个 ensure_admin 方法来添加到 before_filter,如果他们不是管理员,你可以 redirect_to workers#index

我是 Rails 的新手,所以我不确定执行此操作的传统方式,但以上是我可以做到的方式。

于 2012-12-29T01:58:33.463 回答