Overwriting default accessors

Hi all,

Coming from the Java & Hibernate world, I was confused when trying out this piece of line of code: class Task < ActiveRecord::Base   def status=(status)     status = 'P'     write_attribute(:status, status)   end end

I suspect that the value of :status in the database would be P, because I presume rails would set the attribute value first before saving it to the database. But instead I am getting this error: ActiveRecord::StatementInvalid: Mysql::Error: Column 'status' cannot be null

So what does overwriting default accessors used for in real life apps? And how do we set the value before it is saved to the database in Rails?

Thank you very much in advance for the insights.