なるようになるブログ

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

rails commit log流し読み(2021/04/20)

2021/04/20分のコミットです。

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

activerecord/CHANGELOG.md


Add option to skip joins for associations.

Active Recordの修正です。

associationsにjoinを無効化する為のオプション(disable_joins)を追加しています。

複数DBを使用している、かつ、associationデータが違うDBにあるようなjoinでデータが取得出来ないときの為のオプションです。disable_joinsを指定した場合、association取得用のqueryはjoinではなく、テーブル単体からデータを取得するSQLになります。

class Dog
  has_many :treats, through: :humans, disable_joins: true
  has_many :humans
end
@dog.treats
# => SELECT "humans"."id" FROM "humans" WHERE "humans"."dog_id" = ?  [["dog_id", 1]]
# => SELECT "treats".* FROM "treats" WHERE "treats"."human_id" IN (?, ?, ?)  [["human_id", 1], ["human_id", 2], ["human_id", 3]]

Don't clear view cache during concurrent requests

actionview/lib/action_view/cache_expiry.rbactionview/lib/action_view/railtie.rbの修正です。

concurrent requestsの間にview cacheがclearされないよう修正しています。view cacheがclearされてしまうと、cacheされたviewが参照出来ず、responseを返す途中でエラーになってしまう事がある為。


Improve did_you_mean partial name correction

actionview/lib/action_view/template/error.rbの修正です。

テンプレートが見つからなかった場合のサジェスチョン処理で、partial template名が正しく表示・サジェストされないバグがあったのを修正しています。


Address non-deteristic CI failure of HasManyThroughDisableJoinsAssociationsTest

activerecord/test/cases/associations/has_many_through_disable_joins_associations_test.rbの修正です。

assertionで値を比較する際に、値をidでsortしてからチェックするよう修正しています。 sortを指定しないと結果が不定になる為。


Remove unused constant from disable_joins_association_relation

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

使用していないTOO_MANY_RECORDS定数を削除しています。


Merge pull request #41990 from p8/autosave-association-callbacks-get-called-once

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

has_one associationでautosaveが有効になっている + 双方向に参照があるようなassociationの場合にautosave association callbacksが複数回実行されてしまうバグがあったのを修正しています。