I'm trying to make a EnumListField
in Lift/Record/Squeryl, similar to MappedEnumList
in LiftMapper
. The storage type should be Long/BIGINT. I understand that if I define:
def classOfPersistentField = classOf[Long]
Then Squeryl will know it should create a BIGINT column. And I know it uses setFromAny()
to set the value, passing in the Long. The one piece I don't get is:
How will it read the field's value? If it uses valueBox
, it will get a Seq[Enum#Value]
, and it won't know how to turn that into a Long.
How do I tell Squeryl to convert my Seq[Enum#Value]
to a Long, or define a "getter" that returns a Long, and that doesn't conflict with the "normal" getter(s)?
you are implementing your validation logic incorrectly. The correct way to validate a Record field is to override
def validations: List[ValidationFunction]
where ValidationFunction is a type alias
type ValidationFunction = ValueType => List[FieldError]
and in your case ValueType == String.
The next issue is your Domain trait. Because your call to validate is inlined into the class definition, it will be called when your field is constructed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With