Tôi đang nâng cấp mã hiện có từ Rogue 1.1.8đến 2.0.0và lift-mongodb-recordtừ 2.4-M5 to 2.5.
Tôi đang gặp khó khăn khi viết MongoCaseClassFieldcó chứa một scala enum, mà tôi thực sự có thể sử dụng một số trợ giúp.
Ví dụ,
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)
/// ...
}
Khi chúng tôi cố gắng ghi vào trường này, chúng tôi nhận được lỗi sau:
không thể tìm thấy giá trị ngầm định cho tham số bằng chứng của loại com.f xông.rogue.BSONType [MyCaseClass] .and (_. myCaseClass setTo myCaseClass)
Chúng tôi đã từng làm việc này trong Rogue 1.1.8, bằng cách sử dụng phiên bản riêng của chúng tôi MongoCaseClassField, điều này làm cho phương thức #formats trở nên quá mức. Nhưng tính năng đó đã được đưa vào bản ghi nâng-mongodb trong 2.5-RC6, vì vậy chúng tôi nghĩ rằng nó chỉ nên hoạt động bây giờ?