我如何写下面这个表达式? 当用户不是admin时,我想返回false,当user_id与current_user_id不匹配或user_id为空时,我想返回。
def self.get_user_id(name)
current_user_id = User.current.id
user_id = User.where("name=?" ,name).id
admin = check_admin(current_user_id)
return false if[(admin != true) && (user_id != current_user_id)] || user_id.blank?
user_id
end
def self.check_admin(id)
user = User.current
admin = Setting.find_by_key("admins").value
return true if admin.include?(user.login)
end
答案 0 :(得分:0)
在Ruby中,您不需要明确使用return
关键字,而且代码中也存在一些错误。试试这个:
def self.get_user_id(name)
current_user_id = User.current.id
user_id = User.find_by(name: name)&.id
admin = check_admin(current_user_id)
admin && !(user_id.blank? || user_id != current_user_id)
end
def self.check_admin(id)
user = User.current
admin = Setting.find_by_key("admins").value
admin.include?(user.login)
end
注意:在第3行,我使用ruby“安全操作符”,假设您使用的是Ruby> = 2.3.0。如果你的ruby版本低于你的版本,你可以使用user_id = User.find_by(name: name).try(:id)