ActiveRecord处理时间戳做这样的事情:
我如何使用SORM进行操作?
答案 0 :(得分:3)
乍一看,这样的事情可行:
import org.joda.time._
object Db extends Instance (entities = ...) {
override def save [T <: AnyRef : TypeTag] ( v : T )
= v match {
case v : Artist with Persisted =>
super.save( v.copy( updatedAt = DateTime.now() ) )
case v : Artist =>
super.save( v.copy( createdAt = DateTime.now() ) )
// ... so on for other entities
case v =>
super.save(v)
}
}
但是那你将如何从头开始创建这些艺术家实例呢?这些日期字段是应该分配有凌乱的null
s还是null-ish日期值,还是应该包含在Option
s中?好吧,其中任何一个都应该解决问题,但这是另一种选择:
import org.joda.time._
case class Artist
( name : String,
updatedAt : DateTime = DateTime.now(),
createdAt : DateTime = DateTime.now() )
object Db extends Instance (entities = ...) {
override def save [T <: AnyRef : TypeTag] ( v : T )
= v match {
case v : Artist with Persisted =>
super.save( v.copy( updatedAt = DateTime.now() ) )
case v =>
super.save(v)
}
}
我得告诉你,整个问题对我来说并不是很自然。我无法想象这种行为会带来什么好处。但是我再次向你们展示了各种选择。