Skip to content

Commit

Permalink
Merge pull request #1751 from yasslab/update80_active_record_callbacks
Browse files Browse the repository at this point in the history
[8.0] active_record_callbacks.mdの原文更新を訳文に反映
  • Loading branch information
hachi8833 authored Nov 13, 2024
2 parents 4a8e88e + 99ece82 commit af3aaa3
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions guides/source/ja/active_record_callbacks.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class User < ApplicationRecord
end
```

以下のように、**コールバックにprocを渡してトリガー*させる*ことも可能です。
以下のように、**コールバックにprocを渡してトリガーさせる**ことも可能です。

```ruby
class User < ApplicationRecord
Expand All @@ -76,7 +76,7 @@ class User < ApplicationRecord
end
```

最後に、独自の[カスタムコールバックオブジェクト](#コールバックオブジェクト)も定義できます。これについては後述します。
最後に、**独自の[カスタムコールバックオブジェクト](#コールバックオブジェクト)**も定義できます。これについては後述します。

```ruby
class User < ApplicationRecord
Expand Down Expand Up @@ -170,7 +170,7 @@ Active Recordで利用可能なコールバックの一覧を以下に示しま

#### バリデーション時のコールバック

バリデーション時のコールバックは、レコードが[`valid?`](https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-valid-3F)(またはエイリアスの[`validate`](https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-validate))、または[`invalid?`](https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-invalid-3F)メソッドで直接バリデーションされるか、もしくは`create``update``save`で間接的にバリデーションされるたびにトリガーされます。これらはバリデーションフェーズの直前(`before_validation`)または直後(`after_validation`)に呼び出されます。
バリデーション時のコールバックは、レコードが[`valid?`][](またはエイリアスの[`validate`][])、または[`invalid?`][]メソッドで直接バリデーションされるか、もしくは`create``update``save`で間接的にバリデーションされるたびにトリガーされます。これらはバリデーションフェーズの直前(`before_validation`)または直後(`after_validation`)に呼び出されます。

```ruby
class User < ApplicationRecord
Expand Down Expand Up @@ -201,6 +201,13 @@ Validation failed: Name can't be blank
=> false
```

[`valid?`]:
https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-valid-3F
[`validate`]:
https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-validate
[`invalid?`]:
https://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-invalid-3F

#### 保存時のコールバック

保存時のコールバックは、レコードが`create``update`、または`save`メソッドで背後のデータベースに永続化(保存)されるたびにトリガーされます。これらは、オブジェクトが保存される直前(`before_save`)、保存された直後(`after_save`)、および保存の直前直後(`around_save`)に呼び出せます。
Expand Down Expand Up @@ -765,7 +772,7 @@ end

WARNING: `ActiveRecord::Suppressor`を利用すると、コールバックの実行を選択的に制御できるメリットがある反面、コードが複雑になって思わぬ振る舞いが発生する可能性もあります。コールバックを抑制すると、アプリケーションで意図したフローがわかりにくくなり、今後のコードベースの理解やメンテナンスが困難になる可能性があります。コールバックを抑制した場合の影響の大きさを慎重に検討し、ドキュメント作成やテストを入念に実施して、意図しない副作用やパフォーマンスの問題、テストの失敗のリスクを軽減する必要があります。

コールバックを停止する
コールバックの停止
-----------------

モデルに新しくコールバックを登録すると、コールバックは実行キューに入ります。このキューには、あらゆるモデルに対するバリデーション、登録済みコールバック、実行待ちのデータベース操作が置かれます。
Expand Down

0 comments on commit af3aaa3

Please sign in to comment.