Railsでモデル間で似た処理を書こうという思って、はてさてどうしようかなと小一時間ほど悩んだ結果。
まず、config/application.rbを編集して、config.autoload_pathsにパスを追加します。
config.autoload_paths += %W(#{config.root}/extras)
config/application.rbにコメント化されたものがあるのでそれを単に有効化するだけ。
で、似たような処理を書くファイルをRails.root/extrasに格納。今回は、Rails.root/extras/common_util.rbとして作成。Rails.root/extras/common_util.rbの中身は、
module CommonUtil def my_add(a, b) a + b end module_function :my_add end
ってな感じで書く。
後は、CommonUtil.my_add(1, 2)って書けばどこでも呼び出せる。
とりあえず、今はこれで。Observerを使えば色々できそうなんだけど、なんだかちょっと使い道が違うなぁと思って。