You should go for a companion object and a case class eg:
object User {
def apply(name: String): User = User(new ObjectId(), name)
def apply(id: String, name: String): User = User(new ObjectId(id), name)
}
case class User(id: ObjectId, name: String)
Then you can handle either these cases:
val user = User("Ross")
val user1 = User("5204b74d9932e8319b8e9ec0", "Ross")
val user2 = User(new ObjectId(), "Whitehead")