From d28548603244347cf97aa7021c54ea1eff75c9c4 Mon Sep 17 00:00:00 2001 From: Shodai Suzuki Date: Tue, 19 Feb 2019 13:16:32 +0900 Subject: Add combining callback conditions [skip ci] (#35313) --- guides/source/active_record_callbacks.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'guides/source/active_record_callbacks.md') diff --git a/guides/source/active_record_callbacks.md b/guides/source/active_record_callbacks.md index ebdee446f9..4579b748df 100644 --- a/guides/source/active_record_callbacks.md +++ b/guides/source/active_record_callbacks.md @@ -338,6 +338,20 @@ class Comment < ApplicationRecord end ``` +### Combining Callback Conditions + +When multiple conditions define whether or not a callback should happen, an `Array` can be used. Moreover, you can apply both `:if` and `:unless` to the same callback. + +```ruby +class Comment < ApplicationRecord + after_create :send_email_to_author, + if: [Proc.new { |c| c.user.allow_send_email? }, :author_wants_emails?], + unless: Proc.new { |c| c.article.ignore_comments? } +end +``` + +The callback only runs when all the `:if` conditions and none of the `:unless` conditions are evaluated to `true`. + Callback Classes ---------------- -- cgit v1.2.3