Domanda

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.

È stato utile?

Soluzione

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top