Rails 2.3.2
This seems related specifically to the suffices _type and _value. Attributes ending in either of these strings are not processed by the attribute= method. if #write_attribute("something_type", "a value") is called instead, then the somthing-type= method is again bypassed and the attribute is set to the literal value provided instead.
I have raised a ticket for this: