なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2020/07/14)

2020/07/14分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activerecord/CHANGELOG.md


Merge pull request #39820 from kamipo/enum_default

activerecord/lib/active_record/attributes.rbactiverecord/lib/active_record/enum.rbの修正です。

Enumにデフォルト値を指定出来るよう対応しています。

class Book < ActiveRecord::Base
  enum status: [:proposed, :written, :published], _default: :published
end

Book.new.status # => "published"

Allow attribute's default to be configured but keeping its own type

activerecord/lib/active_record/attributes.rbの修正です。

attributeのdefaultを指定した場合に、typeが強制的にType::Valueになってしまっていたのを、元のtypeを維持するよう修正しています。

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, ...>