Это код:Как уменьшить этот код ruby?
def explaination_exists
explaination_exists_flag = false
if self.explanation1.length > 5
explaination_exists_flag = true
end
if self.explanation2.length > 5
explaination_exists_flag = true
end
if self.explanation3.length > 5
explaination_exists_flag = true
end
if self.explanation4.length > 5
explaination_exists_flag = true
end
unless explaination_exists_flag
errors.add(:base, 'Atleast one explanation should be there.')
end
end
Я хочу, чтобы уменьшить код к одной строки кода, так как нет никаких изменений для объяснений [номер] за исключением.
Я попытался это:
def explaination_exists
explaination_exists_flag = false
(1..4).each do |i|
if self."explanation#{i}".to_sym.length > 5
explaination_exists_flag = true
break
end
end
unless explaination_exists_flag
errors.add(:base, 'Atleast one explanation should be there.')
end
end
Я знаю, что это глупо, но вы можете предложить мне некоторые изменения, которые могли бы работать.
Спасибо!
Всякий раз, когда у вас есть длинный список имен переменных, которые выглядят как var 'i'..'j'. Для хранения этой информации используются неправильные структуры данных. Пожалуйста, рефакторинг кода, который получает 'объяснение'1,2,3 .... Возможно, есть лучший способ сохранить эти переменные. Может быть в массиве? – bsd