読者です 読者をやめる 読者になる 読者になる

ActiveModelを継承していないModelでValidationを実施する

ActiveModelを継承していないModelでValidationを実施する必要があったのでメモ
http://qiita.com/shunhikita/items/772b81a1cc066e67930e

vi app/models/mymodel.rb

class Mymodel
     include ActiveModel::Validations
     validates_with MymodelValidator
end

vi app/models/mymodel_validator.rb

class MymodelValidator < ActiveModel::Validator

     def validate(record)
          unless record.prop.present? and is_prop_less_than_100?(record.prop)
               record.errors[:prop] << 'Error message'
          end
     end

     def is_prop_less_than_100?(p)
          prop < 100
     end
end

validationを呼び出すときはcontroller内で@model.valid?を実施
falseならエラーメッセージがerrorsにはいる。