• R
    Allow attribute's default to be configured but keeping its own type · 8c793aa8
    Ryuta Kamizono 提交于
    ```ruby
    class Post < ActiveRecord::Base
      attribute :written_at, default: -> { Time.now.utc }
    end
    
    # Rails 6.0
    Post.type_for_attribute(:written_at) # => #<Type::Value ... precision: nil, ...>
    
    # Rails 6.1
    Post.type_for_attribute(:written_at) # => #<Type::DateTime ... precision: 6, ...>
    ```
    
    This is an alternative of #39797.
    
    Context https://github.com/rails/rails/pull/39797#issuecomment-655191817.
    
    If people intend to override the existing type on the attribute, usually
    an overriding type is explicitly specified, so I agree that the current
    behavior (drop existing type information if type is omitted) is
    practically quite useless, and it is almost like a bug in that there is
    no way to override just the default.
    
    So I'd like to change the current behavior on existing attributes
    without a deprecation as a fix.
    
    Closes #39797.
    
    See also https://github.com/kufu/activerecord-bitemporal/pull/57.
    8c793aa8
attributes_test.rb 11.3 KB