This project is archived and is in readonly mode.

#346 ✓resolved
Ben Johnson

skip_time_zone_conversion_for_attributes does not work

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

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!

Comments and changes to this ticket

  • Tarmo Tänav

    Tarmo Tänav August 23rd, 2008 @ 02:14 PM

    • 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

    Geoff Buesing August 24th, 2008 @ 05:01 PM

    • 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
  • Emilio Tagua

    Emilio Tagua September 12th, 2008 @ 03:29 PM

    • 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

    Repository September 14th, 2008 @ 11:24 PM

    • 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 state:resolved] http://github.com/rails/rails/co...

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

Attachments

Referenced by

Pages