- 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
Мистер Хэнки 14.12.2010 19:39 # 0
Dreamfall 15.12.2010 00:04 # 0
Не считая того, что в Ruby on Rails имеется куча своих гибких валидаторов, этот код можно было в любом случае сильно упростить (хотя лучше убрать с глаз долой) :)
И да, в руби ++ нет, зато есть += :)
inkanus-gray 15.12.2010 00:19 # 0
Кстати, в руби можно данный пример реализовать циклом?
Dreamfall 15.12.2010 00:41 # 0
Но дело в том, что это настолько сферический говнокод в вакууме, что нет смысла его нормальной реализации :) я не знаю, зачем он нужен был пердыдущему кодеру :)
Это одни из полей модели. Если их где-то объявить как массив в классе, то потом можно спокойно по нему итерироваться. типа
Причем "try(a)" это наверное кривой способ. У меня слишком маленький опыт разработки на руби, чтобы быть уверенным в моем коде :)
malleus 05.01.2011 13:18 # +1
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