Rails - ActiveModel::Callbacksでカスタムコールバックヘ(^o^)ノ
あけましておめでとうございます。
年内で仕事が納まらず、1日からコードをごりごり書いております。。。
さて、ActiveRecord::Callbacksはみなさんおなじみ
before_saveとか良く使いますよね?
でも、今回やりたい事はこういうの
# app/models/comment.rb class Comment < ActiveRecord::Base after_publish :send_mail #publishメソッドのCallback def publish [...] end private def send_mail Notifier.comment_published(self).deliver_now end end
ActiveRecordのCallbacksを参考に => active_record/callbacks.rb
# app/models/concerns/comment_callbacks.rb module CommentCallbacks extend ActiveModel::Callbacks extend ActiveSupport::Concern included do define_model_callbacks :publish, only: :after end private def action_after_publish puts '- after publish' end end # app/models/comment.rb class Comment < ActiveRecord::Base include CommentCallbacks after_publish :action_after_publish def publish run_callbacks :publish do puts '> publish!' end end end
$ Comment.new.publish > publish! - after publish
ちゃんとCallbackされましたね
もっと良い実装があれば教えてくだされー
そもそも、この実装が良いのかもわからんし...( ̄▽ ̄;)
Happy Hacking٩( ‘ω’ )و