Tôi đang nâng cấp mã hiện có từ Rogue 1.1.8
đến 2.0.0
và lift-mongodb-record
từ 2.4-M5 to 2.5
.
Tôi đang gặp khó khăn khi viết MongoCaseClassField
có 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ờ?