All you need is,
before_save :sanitize_phone_number_fields
def sanitize_phone_number_fields
[:primary_phone, :secondary_phone, :fax].each{|attr| self.send(attr).gsub!(/\D/, '')}
end
문제
I'm relatively new to ruby. Can this be DRYed up? And how?
def primary_phone
number_to_phone self.primary_phone_number
end
def primary_phone=(number)
self.primary_phone_number = number.gsub(/\D/, '')
end
def secondary_phone
number_to_phone self.secondary_phone_number
end
def secondary_phone=(number)
self.secondary_phone_number = number.gsub(/\D/, '')
end
def fax
number_to_phone self.fax_phone_number
end
def fax=(number)
self.fax_phone_number = number.gsub(/\D/, '')
end
I'm using this code in Rails as a kind of buffer between the database, which is storing the numbers as integers, and the user form which is inputing them as strings.
해결책
All you need is,
before_save :sanitize_phone_number_fields
def sanitize_phone_number_fields
[:primary_phone, :secondary_phone, :fax].each{|attr| self.send(attr).gsub!(/\D/, '')}
end