Одним из приятных преимуществ Scala является то, что вы можете быть безопасными при вводе текста, чтобы в приложении не появлялись неопределенные значения. Монго, однако, не является типобезопасным вообще. Итак, я подумал, что лучше использовать своего рода преобразование в Mongo и обратно, чтобы гарантировать сохранение только правильных значений (в виде строк). У меня есть этот тип в моем Scala:
sealed trait Tribe
object Tribe {
def fromString(s:String) = s match {
case "Earth Pony" => EarthPony
case "Pegasus" => Pegasus
case "Unicorn" => Unicorn
case "Alicorn" => Alicorn
case _ => throw new NoSuchElementException
}
}
case object EarthPony extends Tribe {
override def toString = "Earth Pony"
}
case object Pegasus extends Tribe {
override def toString = "Pegasus"
}
case object Unicorn extends Tribe {
override def toString = "Unicorn"
}
case object Alicorn extends Tribe {
override def toString = "Alicorn"
}
Теперь я хочу создать поле TribeField
, которое я могу использовать в классе MongoRecord
, чтобы убедиться, что это преобразование выполнено, когда я читаю Запись, или сохранить его.
К сожалению, документация по Записи Лифта кажется скудной, и до сих пор я не нашел никакой полезной информации о том, как это сделать. Может быть, кто-то здесь может дать мне несколько советов?