ฉันกำลังอัพเกรดรหัสที่มีอยู่จากRogue 1.1.8
ไป2.0.0
และจากlift-mongodb-record
2.4-M5 to 2.5
ฉันมีปัญหาในการเขียนMongoCaseClassField
ซึ่งมี scala enum ซึ่งฉันสามารถใช้ความช่วยเหลือได้บ้าง
ตัวอย่างเช่น,
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] .and (_. myCaseClass setTo myCaseClass)
เราเคยมีการทำงานใน Rogue 1.1.8 โดยใช้รุ่นของเราเองMongoCaseClassField
ซึ่งทำให้ #formats วิธี overridable แต่ฟีเจอร์ดังกล่าวนั้นรวมอยู่ในการยก -mongodb-record ใน 2.5-RC6 ดังนั้นเราคิดว่าตอนนี้ควรจะใช้งานได้หรือไม่