This project is archived and is in readonly mode.
skip_time_zone_conversion_for_attributes does not work
-
Tarmo Tänav
- State changed from new to invalid
- Tag set to activerecord, bug
I can't reproduce this, both on 2.1.0 and on edge. Please provide more info as to the environment or a working testcase.
-
Geoff Buesing
- State changed from invalid to open
- Assigned user set to Geoff Buesing
Actually, this is indeed a bug -- we're using cattr_accessor to define skip_time_zone_conversion_for_attributes, which means that every class that subclasses ActiveRecord::Base is writing to the same class variable.
We should probably be using class_inheritable_array here.
In the meantime, this works:
class A < ActiveRecord::Base def self.skip_time_zone_conversion_for_attributes [:field_a] end end class B < ActiveRecord::Base def self.skip_time_zone_conversion_for_attributes [:field_b] end end >> A.skip_time_zone_conversion_for_attributes => [:field_a] -
Geoff Buesing
- Milestone cleared.
-
Emilio Tagua
- Tag changed from activerecord, bug to activerecord, bug, patch
Here is the patch fixing the problem, i also added test to reproduce Ben's issue.
Oh, and it should use class_inheritable_accessor instead of class_inheritable_array or cattr_accessor.
-
Repository
- State changed from open to resolved
(from [9c4730d01e892df8d5c5493a08e0cddf0de5d575]) Base.skip_time_zone_conversion_for_attributes uses class_inheritable_accessor, so that subclasses don't overwrite Base [#346 skip_time_zone_conversion_for_attributes does not work state:resolved] http://github.com/rails/rails/co...
