LoginSignup
1
0

More than 5 years have passed since last update.

Active Recordのコールバックの記述方法について

Posted at

callbackの書き方で、defがシンボルを返すことを利用して以下のコードの様に書くのはどうだろうかと最近思ったのであげて見ました。

class Hoge < ApplicationRecord
  private

  ## validate
  validate def _check_maintenance_time
             errors.add(:created_at, "メンテナンス中のため作成できません") if _in_maintenance_term?
           end, on: :create

  ## callback
  after_create def _owner_join
                 event_members.create(owner: owner, state: :approved)
               end
end

メリット

  • メソッドとcallbackの指定がDRYになって変更時に、エディターであちこち移動しなくていい
  • grepした時にcallbackだと分かる
    • 複数ある場合は都度callbackを頭につける想定

デメリット

  • 記述が増える
  • インデントが微妙

private指定でも使える

class Fuga < ApplicationRecord
  private def fuga
            "fuga"
          end
  # private validate def fuga とはできない
end

緩募

ダメな理由とかあればゆるく知りたい感じなんで、コメントかブックマークコメントいただけると嬉しいです。

1
0
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
1
0