Я обновление существующего кода от Rogue 1.1.8
до 2.0.0
и lift-mongodb-record
от 2.4-M5 to 2.5
.
Мне трудно написать, MongoCaseClassField
что содержит перечисление scala, с которым мне действительно нужна помощь.
Например,
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)
/// ...
}
Когда мы пытаемся написать в это поле, мы получаем следующую ошибку:
не удалось найти неявное значение для параметра доказательства типа com.foursquare.rogue.BSONType [MyCaseClass]. и (_. myCaseClass setTo myCaseClass)
Раньше у нас это работало в Rogue 1.1.8, используя нашу собственную версию MongoCaseClassField
, которая сделала метод #formats переопределяемым. Но эта функция была включена в запись lift-mongodb-record в 2.5-RC6, поэтому мы подумали, что это должно работать сейчас?