Estoy actualizando el código existente a partir Rogue 1.1.8
de 2.0.0
y lift-mongodb-record
desde 2.4-M5 to 2.5
.
Tengo dificultades para escribir MongoCaseClassField
que contenga una enumeración de escala, con la que realmente podría necesitar ayuda.
Por ejemplo,
object MyEnum extends Enumeration {
type MyEnum = Value
val A = Value(0)
val B = Value(1)
}
case class MyCaseClass(name: String, value: MyEnum.MyEnum)
class MyMongo extends MongoRecord[MyMongo] with StringPk[MyMongo] {
def meta = MyMongo
class MongoCaseClassFieldWithMyEnum[OwnerType <: net.liftweb.record.Record[OwnerType], CaseType](rec : OwnerType)(implicit mf : Manifest[CaseType]) extends MongoCaseClassField[OwnerType, CaseType](rec)(mf) {
override def formats = super.formats + new EnumSerializer(MyEnum)
}
object myCaseClass extends MongoCaseClassFieldWithMyEnum[MyMongo, MyCaseClass](this)
/// ...
}
Cuando intentamos escribir en este campo, obtenemos el siguiente error:
no se pudo encontrar el valor implícito para el parámetro de evidencia de tipo com.foursquare.rogue.BSONType [MyCaseClass] .and (_. myCaseClass setTo myCaseClass)
Solíamos hacer que esto funcionara en Rogue 1.1.8, utilizando nuestra propia versión de MongoCaseClassField
, que hizo que el método #formatos se pudiera anular. Pero esa característica se incluyó en lift-mongodb-record en 2.5-RC6, por lo que pensamos que esto debería funcionar ahora.