Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

skip_time_zone_conversion_for_attributes does not work

#346

If I do the following:

class A < ActiveRecord::Base

self.skip_time_zone_conversion_for_attributes = [:field_a]

end

class B < ActiveRecord::Base

self.skip_time_zone_conversion_for_attributes = [:field_b]

end

>> A.skip_time_zone_conversion_for_attributes

=> [:field_b]

Shouldn't it be [:field_a]?

Thanks!

Reported by Ben Johnson · June 5th, 2008 @ 10:20 PM

State: resolved
Milestone: none
Assigned to: Geoff Buesing Geoff Buesing
Importance: none

Activity

  1. Tarmo Tänav
    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.

    August 23rd, 2008 @ 02:14 PM

  2. Geoff Buesing
    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]
    

    August 24th, 2008 @ 05:01 PM

  3. Geoff Buesing
  4. Emilio Tagua
    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.

    September 12th, 2008 @ 03:29 PM

  5. Repository
    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...

    September 14th, 2008 @ 11:24 PM