2011年12月17日土曜日

[Rails3] モデルにメソッドを追加する

実行環境:
ruby 1.9.3
Rails 3.1.3
Rails3でActiveRecordのモデルにクラスメソッドを追加します。
といっても、モデルだからどうだとかいう話は全然なくて、単純にクラスにメソッドを追加するだけの話なんですが、うっかり忘れてしまったのでメモ。
#{RAILS_ROOT}/app/models/user.rb
class User < ActiveRecord::Base def instance_method # インスタンスメソッド return end def self.class_method # クラスメソッド return end private def private_method # プライベートなインスタンスメソッド return end end
というようにモデルにメソッドを追加します。

クラスに対して使おうとするとこんな感じ
× User.instance_method
○ User.class_method

インスタンスに対して使おうとするとこんな感じ
user = User.find(1)
○ user.instance_method
× user.class_method
× user.private_method

使い分けとしては、 インスタンスの状態(インスタンスが持つ変数たち)によって結果が変わるようなメソッドはインスタンスメソッド、 インスタンスに依って変わらないクラスに共通の処理を行うような場合はクラスメソッド、という感じでしょうか。

0 件のコメント:

コメントを投稿