Rails - 如果用户未获批准,请勿发送消息

时间:2016-06-03 12:12:19

标签: ruby-on-rails controller action

我有一个rails应用程序和用户模型。用户可以注册表单,但管理员应首先批准他/她的个人资料。所以我有状态:boolean默认为用户模型中的false列。您可以在搜索字段中搜索用户。如果status列为false,我不会显示这些用户。

BUT 假设具有id 5的用户未被批准意味着状态列为false。

如果用户输入... / en / users / 5

它转到该URL并可以发送消息。我应该怎么做才能发送电子邮件。

我应该有类似的东西;

def check_user(user)
  if user.status
     redirect_to root_path
  end
end

我应该把它放在哪里?对于用户控制器#show action as filter before?

2 个答案:

答案 0 :(得分:1)

这可能取决于您的需求。如果您只需要此检查以禁止此特定操作,请按照您的建议添加到#show方法。 您可能希望保护所有用户控制器操作(而不仅仅是#show)。在另一种方法中,您可能不希望重定向用户(它没有提供信息),但显示视图并隐藏它的发送电子邮件部分(改为添加一些警告消息)。确保您保护发送电子邮件的方法!

此外,您甚至可能希望将上述逻辑放到ApplicationController上,以防止未经批准的用户执行任何操作 - 如果符合您的需求

答案 1 :(得分:1)

您必须像

一样放入应用程序控制器
class Api::ApplicationController < ApplicationController
    before_action :check_user

   def check_user
     # get your user here with the help of param
     if !user.status
       redirect_to root_path
    end
   end
end