if can?(current_user, :download_code, @project) || @enterprise && !(@project.empty_repo? || @wait_fork || @wait_fetch)

&& 的优先级高于 ||

判断时候,要注意加括号
改为如下:

if (can?(current_user, :download_code, @project) || @enterprise) && !(@project.empty_repo? || @wait_fork || @wait_fetch)