У меня есть фильтр before_save под названием :strip_whitespaces
в модели Rails, подобной этой.
before_save :strip_whitespaces
Фильтр strip_whitespaces
— это закрытый метод, который определяется следующим образом:
private
def strip_whitespaces
self.name = name.split.join(" ") if attribute_present?("name")
self.description = description.split.join(" ") if attribute_present?("description")
self.aliases = aliases.split.join(" ") if attribute_present?("aliases")
end
Как использовать метод отправки ruby, чтобы сделать этот метод DRY-er? Это также помогает, когда мне нужно добавить больше полей в этот фильтр.
Я имел в виду что-то подобное, но это не работает
%W[name description aliases].each do |attr|
self.send(attr) = self.send(attr).split.join(" ") if attribute_present?(attr)
end