Sto aggiornando il codice esistente da Rogue 1.1.8
a 2.0.0
e lift-mongodb-record
da2.4-M5 to 2.5
.
Sto avendo difficoltà a scrivere MongoCaseClassField
che contiene una scala enum, con cui potrei davvero aiutare.
Per esempio,
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)
/// ...
}
Quando proviamo a scrivere in questo campo, otteniamo il seguente errore:
impossibile trovare il valore implicito per il parametro di prova di tipo com.foursquare.rogue.BSONType [MyCaseClass] .and (_. myCaseClass setTo myCaseClass)
Avevamo l'abitudine di farlo funzionare in Rogue 1.1.8, usando la nostra versione di the MongoCaseClassField
, che rendeva superabile il metodo #formats. Ma quella funzione era inclusa nel record di lift-mongodb in 2.5-RC6, quindi abbiamo pensato che dovrebbe funzionare ora?