2019/02/19分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Don't allow
where
with invalid value matches to nil values. - Introduces ActiveRecord::Relation#delete_by and ActiveRecord::Relation#destroy_by.
Fix preparing the configured Action Mailbox ingress in production
actionmailbox/lib/action_mailbox/engine.rb
の修正です。
hookの指定順に誤りがあり、production env(reloadingは無効になっている環境)でingressに関する設定がロードされないバグがあったのを修正しています。
actionpack/lib/action_dispatch/testing/integration.rb
のdocの修正です。
appropriate
をapproriate
にタイポしている箇所があったのを修正しています。
Add combining callback conditions [skip ci] (#35313)
rails guideのActive Record Callbacks
の修正です。
callbackのconditionに:if
と:unless
両方指定した場合について説明したCombining Callback Conditions
セクションを追加しています。
Delete documentation inconsistency 'finally' for AR callbacks [ci skip] (#35303)
rails guideのActive Record Callbacks
、
Active Record Validations
の修正です。
callbackについて説明している箇所のグラマーの修正を行っています。
Merge pull request #35310 from kamipo/dont_allow_invalid_value_matches_to_nil
activemodel/lib/active_model/type/time.rb
、
activerecord/lib/active_record/relation/query_attribute.rb
の修正です。
uuidやdatetime型のカラムに不正な値を指定してwhere
を実行した場合(e.g. where(uuid: "2")
)に、値がnullなデータが結果に一致しまっていた(IS NULL
という条件でSQLが実行されてしまっていた)のを、一致しないよう修正しています。
# before User.where(uuid: "2") # => User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."uuid" IS NULL LIMIT $1 [["LIMIT", 11]] # after User.where(uuid: "2") # => User Load (2.9ms) SELECT "users".* FROM "users" WHERE "users"."uuid" = $1 LIMIT $2 [["uuid", nil], ["LIMIT", 11]]
Rails 5.1までの挙動と合わせる為。
Update active_record_callbacks.md [ci skip]
rails guideのActive Record Callbacks
の修正です。
Combining Callback Conditions
の項、callbackの実行について説明している箇所で、happen
をexecute
に修正しています。
execute
の方が用語として正しい為、という理由だったのですが、既存の箇所でhappen
を使っている箇所が大量にあるため、後ほどRevertされています。
Introduce delete_by and destroy_by methods to ActiveRecord::Relation
activerecord/lib/active_record/querying.rb
、
activerecord/lib/active_record/relation.rb
の修正です。
ActiveRecord::Relation
にdelete_by
メソッド及びdestroy_by
メソッドを追加しています。
destroy_all
とdelete_all
のconditionをメソッドに指定出来るバージョンのメソッドです。元々同様の事をやりたい場合、find_by
やwhere
に条件を指定してdestroy_all
やdelete_all
を使う、という事をやっていたのですが、それらの条件をメソッドに直接指定出来るようになっています。
# Before unreads.where(readable: readable).destroy_all unreads.where(readable: readable).delete_all # After unreads.destroy_by(readable: readable) unreads.delete_by(readable: readable)
Revert "Merge pull request #35324 from sharang-d/patch-2"
先のhappen
をexecute
に修正した対応をRevertしています。