DBとは関係ないフォームの項目をバリデートする

[ruby]
class ActiveForm
include ActiveModel::Conversion
extend ActiveModel::Naming
include ActiveModel::Validations

def persisted?; false; end

def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value) rescue nil
end
end
end
</pre>

こんな感じのクラスを一つ準備して、あとはこれを継承して

[ruby]
class SearchForm < ActiveForm
attr_accessor :age
validates :points, :numericality => true
end
[/ruby]

という感じにする。

Rails 3 用のacts_as_paranoid

Rails 2.x系で、論理削除と言ったら、もうこれ!というのが

acts_as_paranoid

でした。

Rails 3.x系では

rails3_acts_as_paranoid
https://github.com/goncalossilva/rails3_acts_as_paranoid

を使います。

インストールの方法は

GemFileに
[shell]gem “rails3_acts_as_paranoid”, “~>0.2.0″[/shell]
と追記して
bundle実行
※Rails3.1の場合は、GemFileに書くプラグインのバージョンが”~>0.1.4″になります。
※Rails3.0の場合は、GemFileに書くプラグインのバージョンが”~>0.0.9″になります。

あとは、論理削除対象のテーブルにdeleted_atカラムを追加し、モデルに
[ruby]class Users < ActiveRecord::Base
acts_as_paranoid
end[/ruby]
という感じで宣言してやればOK。