maeshimaの日記

メモ書きです

ActiveModel

Rails 3.0’s ActiveModel: How To Give Ruby Classes Some ActiveRecord Magic

を読んで。MerbデベロッパのYehuda Katz(なんて読むんだろ)がRailsの機能のモジュール化的なことをしているらしい。で、その一つにActiveModelがある。

ActiveModelとは

Railsではない、通常のRubyのクラスにActiveModel的な振る舞いをさせることが出来るライブラリ。例えば下記のように、ActiveRecordを継承していないクラスにvalidationの機能をくっつけることが出来る。

require 'active_model'

class Person
  include ActiveModel::Validations

  validates_presence_of :first_name, :last_name

  attr_accessor :first_name, :last_name
  def initialize(first_name, last_name)
    @first_name, @last_name = first_name, last_name
  end
end

a = Person.new("Fred", nil)
a.valid? # => false
a.last_name = "Flintstone"
a.valid? # => true

どういうときにつかえるのか

フォームに入力した結果をDBに入れずにメールで送信するときなんかには使えそうだと思った。