如何检查是否应为用户分配角色admin

时间:2014-12-01 22:11:49

标签: ruby-on-rails ruby methods

此方法的目标是检查用户何时注册,如果他们位于应该是管理员的用户列表中。

我是Ruby的新手,认为这只是一个语法错误:

  def set_role
    if self[:email] == ("email@gmail.com" || "sample@gmail.com" || "test@gmail.com")
        self[:role] = "admin" 
    else
      self[:role] = "customer"
    end
  end

2 个答案:

答案 0 :(得分:1)

这是使用case声明的好时机:

def set_role
  self[:role] = case self[:email]
                when "email@gmail.com", "sample@gmail.com", "test@gmail.com"
                  'admin'
                else
                  'customer'
                end
end

将新值添加到when测试中很容易。

答案 1 :(得分:0)

您想检查一组电子邮件是否包含当前的电子邮件:

def set_role
  if ["email@gmail.com", "sample@gmail.com", "test@gmail.com"].include?(self[:email])
    self[:role] = "admin" 
  else
    self[:role] = "customer"
  end
end

此代码也可以改进:

def set_role
  admin_emails = ["email@gmail.com", "sample@gmail.com", "test@gmail.com"]
  self[:role] = if admin_emails.include?(self[:email])
    "admin" 
  else
    "customer"
  end
end