此方法的目标是检查用户何时注册,如果他们位于应该是管理员的用户列表中。
我是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
答案 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