Вопрос

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top