i have model looks this:
class workrequest < activerecord::base attr_accessible :upload, :assigned_to_staff serialize :assigned_to_staff, array before_save :set_old_staff def set_old_staff @old_staff = self.assigned_to_staff_was end def staff_changed? !self.assigned_to_staff.empty? && self.assigned_to_staff != @old_staff end end i'm trying make use of self.assigned_to_was track when staff assignment change takes place. i'm noticing serialized field behaves differently regular field. console output below shows differing behavior in :upload (text string field) , serialized :assigned_to_staff:
1.9.2-p320 :002 > wr.upload => nil 1.9.2-p320 :003 > wr.upload_was => nil 1.9.2-p320 :004 > wr.upload = "yes" => "yes" 1.9.2-p320 :005 > wr.upload_was => nil compared to:
1.9.2-p320 :006 > wr.assigned_to_staff => [] 1.9.2-p320 :007 > wr.assigned_to_staff_was => [] 1.9.2-p320 :008 > wr.assigned_to_staff << user.last.name user load (0.2ms) select `users`.* `users` order `users`.`id` desc limit 1 => ["last5, first5"] 1.9.2-p320 :009 > wr.assigned_to_staff_was => ["last5, first5"] can explain discrepancy , or suggest workaround?
it appears serialization doesn't implement methods of host class. overrides provided getters , setters, not concatenation.
Comments
Post a Comment