1

我在下面有一个代码:

  @brand = Brand.find_by_id(params[:id])
  if @brand.nil?
    flash[:error] = Flash.record_not_found
    redirect_to admin_brands_path
  end

和下面的另一个变化:

@brand = Brand.find_by_id(params[:id])
return(flash[:error] = Flash.record_not_found and redirect_to admin_brands_path) if @brand.nil?

您认为哪个代码更高效且解释更清楚?当您有其他建议时,您也可以分享。

提前致谢。

4

3 回答 3

5

我会这样做:

def action
  @brand = Brand.find(params[:id])
rescue ActiveRecord::RecordNotFound
  redirect_to admin_brands_path, flash: {error: Flash.record_not_found}
end
于 2013-07-30T13:54:31.963 回答
1

我觉得上面的代码更好,因为它易于理解且非常干净,但是您也可以将其编写如下

unless @brand = Brand.find_by_id(params[:id])
  flash[:error] = Flash.record_not_found
  redirect_to admin_brands_path
end
于 2013-07-30T07:49:41.777 回答
-1

第一个选择肯定要好得多- 毫无疑问。它是可读的,里面没有太多的逻辑,它只做控制器应该做的事情。拥有最少的代码行确实不是一个好的指标。

就重构而言,我会保持原样。也许将#find_by_id 更改为#find,但仅此而已。

于 2013-07-30T13:42:36.490 回答