2021/04/20分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Add option to disable joins for associations.
- Ensure
has_one
autosave association callbacks get called once.
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.rb
、
actionview/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が複数回実行されてしまうバグがあったのを修正しています。