Je mets à jour le code existant de Rogue 1.1.8
a 2.0.0
y lift-mongodb-record
de 2.4-M5 to 2.5
.
J'ai des difficultés à écrire MongoCaseClassField
qui contient un enum en scala, pour lequel j'aurais vraiment besoin d'aide.
Par exemple,
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)
/// ...
}
Lorsque nous essayons d'écrire dans ce champ, nous obtenons l'erreur suivante :
Impossible de trouver une valeur implicite pour le paramètre de preuve de type com.foursquare.rogue.BSONType[MyCaseClass] .and(_.myCaseClass setTo myCaseClass)
Nous avions l'habitude de faire fonctionner cette fonction dans Rogue 1.1.8, en utilisant notre propre version de l'outil d'évaluation de l'impact sur l'environnement. MongoCaseClassField
qui a rendu la méthode #formats surchargeable. Mais cette fonctionnalité a été incluse dans lift-mongodb-record dans la version 2.5-RC6, alors nous avons pensé que cela devrait fonctionner maintenant ?