これはなに
Railsコミッタが連載しているThis week in Railsの内容を、簡単な補足と併せて紹介する連載です。社内slackで毎週書いていたものですがもったいない気がしてきたので公開することにしました。
引用元
今週のトピック
Active Recordのカラム名としてobject_idを使用できるようになった
Active Recordの有効なカラム名としてobject_idを使用できるようになった。
(紆余曲折あったみたい)
Time.now/DateTime.now/Date.todayが#travel_toの後にシステムのタイムゾーンで結果を返すようになった
Time.now、DateTime.now、Date.todayが、#travel_toの使用後にシステムのタイムゾーンで結果を返すように修正。
現在の#travel_toの実装にはバグがあり、引数のタイムゾーンを保持するため、すべてのスタブメソッドがそのタイムゾーンで結果を返してしまう。しかし、本来意図する動作は、これらのメソッドがシステムのタイムゾーンで結果を返すことだった。
Active StorageデータベースモデルでActive Recordのaffixを考慮する
すべてのActive Storageデータベース関連モデルがActiveRecord::Base.table_name_prefixの設定に従うようにした。
分離エンジンにActive Record::Baseテーブル名のprefixを認識させる
分離エンジンにActiveRecord::Base.table_name_prefixを組み込むように対処した。これにより、Active Storage 内を含むエンジン定義のモデルを Active Record のテーブル名プレフィックス構成に合わせることができるようになった。
field_set_tagヘルパーをfieldset_tagにエイリアスする
HTML要素との一貫性を保つために、field_set_tagヘルパーの名前をfieldset_tagに変更した。ActiveJob::Serializers::TimeWithZoneSerializer でデシリアライズするとき、シリアライズされたタイムゾーンを保持する
ActiveSupport::TimeWithZone型の引数をデシリアライズするとき、シリアライズされたタイムゾーン情報を保持するようにした。
DATABASE_URLプロトコルをマップするためにActive Record.protocol_adapters設定を追加する
DATABASE_URL を使用する場合、URL で指定されたプロトコルを特定のデータベース・アダプタに関連付ける設定オプションを導入した。この分離により、アプリケーションは展開環境で構成されたデータベース接続の詳細から独立してアダプタを選択できるようになった。
# ENV['DATABASE_URL'] = "mysql://localhost/example_database"
config.active_record.protocol_adapters.mysql = "trilogy" # trilogyアダプターを使ってMySQLに接続する。