なるようになるブログ

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

rails commit log流し読み(2019/04/06)

2019/04/06分のコミットです。

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

activerecord/CHANGELOG.md


The default value without loading railtie is false [ci skip] (#35881)

rails guideのConfiguring Rails Applicationsの修正です。

Fix the deprecation warning about config.active_job.return_false_on_aborted_enqueueで変更されたreturn_false_on_aborted_enqueueのデフォルト値の説明を元の内容に修正しています。

Fix the deprecation warning about config.active_job.return_false_on_aborted_enqueueで修正された内容はload_defaultsを経由した場合のデフォルトで、正確なデフォルト(何も処理を行わなかった場合の値)では無いため。


Merge pull request #35868 from kamipo/association_isnt_to_be_affected_by_scoping_consistently

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

eager loadしていないassociationのロード処理がscopingの影響を受けるようになってたのを、影響を受けないよう修正しています。preloading及びeager loadingした場合scopingの影響を受けないように既になっており、挙動を合わせる為。

# Before:

Post.where("1=0").scoping do
  Comment.find(1).post                   # => nil
  Comment.preload(:post).find(1).post    # => #<Post id: 1, ...>
  Comment.eager_load(:post).find(1).post # => #<Post id: 1, ...>
end


# After:

Post.where("1=0").scoping do
  Comment.find(1).post                   # => #<Post id: 1, ...>
  Comment.preload(:post).find(1).post    # => #<Post id: 1, ...>
  Comment.eager_load(:post).find(1).post # => #<Post id: 1, ...>
end

Association loading isn't to be affected by null relation scoping

activerecord/lib/active_record/relation.rbactiverecord/lib/active_record/scoping/named.rbの修正です。

associationのロード処理がnul relationのscopingの影響を受けないよう修正しています。


There is no need to check null_relation? in empty_scope?

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

Relation#empty_scope?メソッドからnull relationかどうかのチェック処理を削除しています。その先にあるvaluesのチェック処理でチェックができる為。


Don't repeat same expression in SELECT and GROUP BY clauses

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

SELECTとGROUP BY`で同じ式が含まれないよう修正しています。