- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
def non_blank_attrs_amount
return_value = 4
return_value = return_value + 1 if (!country.blank?)
return_value = return_value + 1 if (!address.blank?)
return_value = return_value + 1 if (!phone.blank?)
return_value = return_value + 1 if (!email.blank?)
return_value = return_value + 1 if (!skype.blank?)
return_value = return_value + 1 if (!site.blank?)
return_value = return_value + 1 if (!comment.blank?)
return_value.to_s
end
Не считая того, что в Ruby on Rails имеется куча своих гибких валидаторов, этот код можно было в любом случае сильно упростить (хотя лучше убрать с глаз долой) :)
И да, в руби ++ нет, зато есть += :)
Кстати, в руби можно данный пример реализовать циклом?
Но дело в том, что это настолько сферический говнокод в вакууме, что нет смысла его нормальной реализации :) я не знаю, зачем он нужен был пердыдущему кодеру :)
Это одни из полей модели. Если их где-то объявить как массив в классе, то потом можно спокойно по нему итерироваться. типа
Причем "try(a)" это наверное кривой способ. У меня слишком маленький опыт разработки на руби, чтобы быть уверенным в моем коде :)
def non_blank_attrs_amount
always_non_blank_attributes_quantity = 4
%w{country address phone email skype site comment}.count{|attribute_name| self.send(attribute_name).present?} + always_non_blank_attributes_quantity
end
# для active record
def non_blank_attrs_amount
self.attributes.values.count(&:present?)
end