我的代码如下:
@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?
您认为哪种代码更有效并且可以解释? 当你有另一个建议你也可以分享。
提前致谢。
答案 0 :(得分:5)
我会这样做:
def action
@brand = Brand.find(params[:id])
rescue ActiveRecord::RecordNotFound
redirect_to admin_brands_path, flash: {error: Flash.record_not_found}
end
答案 1 :(得分:1)
我觉得上面的一个代码更好,因为它易于理解且非常干净,但是你也可以把它写成以下代码
unless @brand = Brand.find_by_id(params[:id])
flash[:error] = Flash.record_not_found
redirect_to admin_brands_path
end
答案 2 :(得分:-1)
第一个选项肯定是更好 - 毫无疑问。它是可读的,内部没有太多的逻辑,它只做控制器应该做的事情。拥有最少的代码行确实不是一个好的指标。
就重构而言,我会保持原样。也许将#find_by_id更改为#find,但就是这样。