11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コールバックとは???

Posted at

コールバックについてよく忘れてしまうことが多いので、備忘録としてしっかり言語化しておきます!

それでは:point_up:

コールバックとは?

必要なタイミングで呼び出せるように、あらかじめ定義しておく関数のこと!

(簡潔で分かりやすい!):relieved:

RailsとJavaScriptの具体例を見ていきましょう!

Ruby on Rails

例・・・Twitterのような投稿SNSで、ユーザーが投稿を行ったら、textカラムに保存されるデータの最後に「!!!」を自動で追加してみます!

tweet.rb
before_create :change_tweet

  def change_tweet
    self.text = text + "!!!"
  end

end

説明していきます!
上記のコードのselfには、これから保存されるTweetクラスのインスタンスが代入されます!
そのため、self.textと記述することで、ユーザーが入力した投稿のtextカラムを取得することができます!
それに、"!!!" を付け加えてるわけですね!

Railsのコールバックまとめ

オブジェクトの状態が変わるとき、すなわちオブジェクトが生成、更新、削除されるときや、バリデーションを実行するときの前後に共通の処理を追加する仕組みです!

JavaScript

JavaScriptでは、コールバックを多用します!
例えば、jQueryのon()は、第二引数にコールバックをとります!

sample.js
$('button').on('click', function() {
  console.log(this);
});

*コールバック内のthisは、イベントが発火した要素を参照します。

知らず知らずのうちにコールバックを使っていたんですね!


以上となります!
コールバックは、コントローラ同様にモデルにもvalidationの直前に実行される、before_validationであったり、saveの直後に実行されるafter_saveなど様々なタイミングで実行されるコールバックが存在します。

まだまだ奥は深そうですね...

活用できればとても便利なので、たくさん活用していきたいです。

それでは、ご静聴ありがとうございました:relaxed:

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?