Это мое мнение. Я называю это Super DRY.
statuses =
[
['Awaiting Marketing & Legal Approval','Awaiting Compliance Approval'],
['Awaiting Marketing Approval','Pending Approval']
]
{:status => statuses[params[:concept][:consulted_legal].to_i][params[:concept][:consulted_marketing].to_i]}
В качестве альтернативы, более традиционный подход - длительный, но читаемый:
status = if params[:concept][:consulted_legal] == "0"
if params[:concept][:consulted_marketing] == "1"
'Awaiting Compliance Approval'
else
'Awaiting Marketing & Legal Approval'
end
else
if params[:concept][:consulted_marketing] == "0"
'Awaiting Marketing Approval'
else
'Pending Approval'
end
end
@concept.attributes = {:status => status}
Примечание : похоже, ваш исходный код проверяет значения флажков. Значения в хэше params
всегда Strings
, а не Fixnum
с, поэтому мой код сравнивает строки. Если по какой-то причине сравнение Fixnum
s - это то, что требуется для вашей ситуации, просто заключите в кавычки цифры.