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
緩募
ダメな理由とかあればゆるく知りたい感じなんで、コメントかブックマークコメントいただけると嬉しいです。