muirbot
muirbot

Reputation: 2081

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.

Upvotes: 7

Views: 3055

Answers (1)

Harish Shetty
Harish Shetty

Reputation: 64363

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 

Upvotes: 14

Related Questions