设计 - 硬编码已经采用的某些用户名

时间:2014-02-13 12:29:02

标签: ruby-on-rails devise

我正在尝试对用户在设计注册时无法选择的某些用户名进行硬编码。

我没有在网络和stackoverflow上找到任何类似的资源。

我的尝试是在users_controller.rb中执行此操作:

def create
  if @user.username == "someuser"
    flash.alert = "Username already taken"
    redirect_to new_user_registration_path
  end
end

哪个不起作用,我认为无论如何都有点奇怪。另一种非正统的方法是检查applications_controller是否存在用户“someuser”以立即销毁他/她并重定向到注册。

是否有正确的方法来执行此操作并在注册期间对某些用户进行硬编码?

谢谢。

2 个答案:

答案 0 :(得分:2)

你应该在模特而不是控制器中做到这一点

尝试这样的事情

validates_exclusion_of :username, in: %w( admin superuser ),
  message: "these username are reserved "

了解更多信息http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_exclusion_of

答案 1 :(得分:1)

在任何情况下,这都是属于模型的东西,而不是控制器。最简单的方法是将此添加为用户名验证,如下所示:

validates :username, exclusion: { in: %w(admin superuser) }