CRUDifyでリレーションを持つモデルの操作を行ってみます。親モデルはこんな感じ。
package code.model import _root_.net.liftweb.mapper._ class Dept extends LongKeyedMapper[Dept] with IdPK { def getSingleton = Dept object deptName extends MappedString(this, 20) } object Dept extends Dept with LongKeyedMetaMapper[Dept] with CRUDify[Long, Dept]{ }
このモデルに多対一の関係を持つ以下のようなモデルを定義します。DeptとのリレーションはMappedLongForeignKeyで表し、CRUDifyでDeptを選択できるようにするためにvalidSelectValuesをオーバーライドしています。これによってプルダウンでDeptを選択できるようになります。
package code.model import _root_.net.liftweb.mapper._ import _root_.net.liftweb.common._ class Emp extends LongKeyedMapper[Emp] with IdPK { def getSingleton = Emp object empName extends MappedString(this, 20) object dept extends MappedLongForeignKey(this, Dept){ override def dbIndexed_? = true override def validSelectValues = Full(Dept.findAll.map{dept => (dept.id.is, dept.deptName.is)}) } } object Emp extends Emp with LongKeyedMetaMapper[Emp] with CRUDify[Long, Emp]{ }