У меня есть этот метод в 3-х моделях, поэтому я хотел бы извлечь его и СУХОЙ вещи. У меня также проблема со значением по умолчанию attr. Когда поле пусто, оно будет оцениваться как пустая строка ""
вместо nil
, поэтому я должен написать условие в методе, чтобы избежать добавления «http» в пустую строку.Рельсы: использование одного и того же метода пользовательской проверки для нескольких моделей
Где я могу поместить метод и как его включить в модели?
Должен ли я оптимизировать метод? Если да, где и как я могу установить значение attr по умолчанию для nil
(rails/db/both)?
before_validation :format_website
def format_website
if website == ""
self.website = nil
elsif website.present? && !self.website[/^https?/]
self.website = "http://#{self.website}"
end
end
potashin, а затем просто позвонить из каждой модели с помощью 'before_validation: format_website'? –
@SzilardMagyar: есть – potashin
potashin, позвольте мне задать еще один вопрос. Является ли метод достаточно хорошим, или я должен что-то сделать с этой проблемой 'nil' vs'? '? –