救援是一种黑客行为,如果发生其他错误,它们会掩盖它们。
尝试这个:
(Company.find_by_id(params["company_id"].name if Company.exists?(params["company_id"]) ||
(@companies.first.name if @companies && @companies.first) ||
current_user.company.name
然后您可以将每个括号中的条件提取到它们自己的方法中,以使其更具可读性,并且更容易调整条件:
company_name_from_id(params["company_id"]) || name_from_first_in_collection(@companies) || current_user_company_name
def company_name_from_id(company_id)
company=Company.find_by_id(company_id)
company.name if company
end
def name_from_first_in_collection(companies)
companies.first.name if companies && companies.first
end
def current_user_company_name
current_user.company.name if current_user.company
end