2

I have a form with a text_field tag for phone numbers, which I would like to save the information to the database as a pure integer. This I though would involve a before_save that would essentially remove all the (), - etc.

I found in a different post that something like this could overwrite the value that comes in from the field "phone".

def original_number=(value)
  value.gsub!(/\D/, '') if num.is_a?(String)
  write_attribute(:original_number, num.to_i)
end

But, the =(value) is confusing me a bit. How would I write that as a before_save parameter?

i.e before_save #######

def #######

end

How would I write that for original_number=(value) ?

Here's what my model looks like so far

# == Schema Information
#
# Table name: phones
#
#  id              :integer          not null, primary key
#  name            :string(255)
#  twilio_number   :integer
#  original_number :integer
#  user_id         :integer
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#

class Phone < ActiveRecord::Base

  attr_accessible :original_number, :user_id, :name, :twilio_number
  belongs_to :user

  validates :name, presence: true
  validates :twilio_number, presence: true
  validates :original_number, presence: true
  validates :user_id, presence: true

  default_scope order: 'phones.created_at DESC'

end
Stepan Parunashvili
  • 2,627
  • 5
  • 30
  • 51

2 Answers2

3

By defining def original_number=(value) method you are overriding the default accessor method. So you wouldnt need to do anything on before_save. Although the code should look like

def original_number=(value)
  num = value.to_s.gsub(/[^0-9+]/, "")
  write_attribute(:original_number, num.to_i)
end
irfn
  • 560
  • 3
  • 11
2

Try this

before_save :set_phone_number,
def set_phone_number
 self.original_number= original_number.gsub(/\D/, '') if original_number.is_a?(String)
 self.original_number =  self.original_number.to_i
end

read more about getter and setter method http://www.rubyist.net/~slagell/ruby/accessors.html , Trying to learn / understand Ruby setter and getter methods

Community
  • 1
  • 1
Amar
  • 6,874
  • 4
  • 25
  • 23