Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 检查return语句的AND或OR条件_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 检查return语句的AND或OR条件

Ruby on rails 4 检查return语句的AND或OR条件,ruby-on-rails-4,Ruby On Rails 4,下面这个表达式怎么写? 如果用户不是管理员,并且用户id与当前用户id不匹配,或者用户id为空,我希望返回false 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) &&

下面这个表达式怎么写? 如果用户不是管理员,并且用户id与当前用户id不匹配,或者用户id为空,我希望返回false

  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

在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\u id=user.find\u by(name:name)。在ruby中尝试(:id)

,您不需要显式使用
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\u id=user.find\u by(name:name)。try(:id)