Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use update_attributes with custom setter methods in Rails?

I have a model called Contact with an attribute called phone_number. I have some custom setter methods such as

def prefix=(num)  
  self.phone_number[3..5] = num  
end

When I call @contact.update_attributes({:prefix => '510'}), I don't get any errors and @contact gets changed, but the changes don't make their way to the database. I've tried using attr_accessible to specifically allow using these setter methods to no avail.

Is there any way to get update_attributes to work for me? I'm using Rails 2.3.8.

like image 790
muirbot Avatar asked Oct 04 '10 21:10

muirbot


1 Answers

You have to inform rails that you have changed an attribute as you are performing in place modifications:

def prefix=(num)
  phone_number_will_change!
  self.phone_number[3..5] = num
end 
like image 92
Harish Shetty Avatar answered Sep 20 '22 17:09

Harish Shetty