Liftことはじめ その7 自作validation

Liftで、validationルールの自作 備忘録
modelクラスの属性に、validationをメソッドをoverride
BandSeqPlayer.scala

package code.model

import net.liftweb.mapper._
import net.liftweb.util._
import net.liftweb.common._

object BandSeqPlayers extends BandSeqPlayers with LongKeyedMetaMapper[BandSeqPlayers] 

class BandSeqPlayers extends Relation with LongKeyedMapper[BandSeqPlayers] with IdPK with OneToMany[Long, BandSeqPlayers] {
  def getSingleton = BandSeqPlayers
…
  object bandseq extends LongMappedMapper(this, BandSeq)
  object player extends LongMappedMapper(this, Player)
  object seq extends MappedLong(this) {
    override def validations =
      minVal _ :: super.validations
    def minVal(in: Long): List[FieldError] =
      if (in > 0 ) Nil
      else List(FieldError(this, <li>Seq must be over 1</li>))
  }

上記のコードでは、seq属性のvalidationsにminValメソッドを追加。
minValメソッドは、0以下に数値をエラーとする。

利用側では、
validateの結果が、errorsとなる。

            bandSeqPlayers.validate match {
              case Nil => {
                bandSeqPlayers.save
                S.notice(msg)
                S.redirectTo(path)
              }
              case errors => {
                S.error(errors)
                S.redirectTo(path)
              }
            }

ソースコードこちら