Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 Ruby-赋值变量,如果在DB中找到,则返回_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Ruby-赋值变量,如果在DB中找到,则返回

Ruby on rails Ruby-赋值变量,如果在DB中找到,则返回,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我正在寻找一种更简洁的方法来分配变量,并在不需要多次DB调用的controller before_action方法的DB中找到值时返回: if Plan.exists?(plan) @plan = Plan.find(plan) return end logger.error "User selected invalid plan." redirect_to plan_path, warning: "Invalid plan selected!" 这是一个合适的救援地点吗?例如: be

我正在寻找一种更简洁的方法来分配变量,并在不需要多次DB调用的controller before_action方法的DB中找到值时返回:

if Plan.exists?(plan)
  @plan = Plan.find(plan)
  return
end
logger.error "User selected invalid plan."
redirect_to plan_path, warning: "Invalid plan selected!"
这是一个合适的救援地点吗?例如:

begin
  @plan = Plan.find(plan)
rescue
  logger.error "User selected invalid plan."
  redirect_to plan_path, warning: "Invalid plan selected!"
end

感觉不对。。。最好的方法是什么?

我认为没有最好的方法。这是品味的问题。我通常在Rails5API中使用后一种方式。差不多

def show
  @book = Book.find(params[:id])
rescue ActiveRecord::RecordNotFound
  render json: { error: "Book not found" }
end
<> p>如果一切正常,我就可以看到快乐路径

认为它是一个反模式,它使用异常来进行流控制。就我个人而言,我倾向于同意。但是,我想这是一个风格和偏好的问题

比如说:

  def foo_before_action
    unless @plan = Plan.find_by(id: params[:id])
      redirect_to plan_path, warning: "Invalid plan selected!"
    end
  end
或者,作为一条直线:

  def foo_before_action
    redirect_to plan_path, warning: "Invalid plan selected!" unless @plan = Plan.find_by(id: params[:id])
  end

前者可能更具可读性。

唯一的问题是rubocp会抱怨在if语句中使用single=