У меня есть две модели:Как подтвердить поле пароля, используя привязку класса ключевого слова play?
case class User(uid: Option[Int], email: String, password: String, created_at: Timestamp, updated_at: Timestamp)
case class UserProfile(firstname: String, lastname: String, gender: Int, user_id: Int)
Я связывающие его в том виде, в контроллере:
val date = new Date()
val currentTimestamp= new Timestamp(date.getTime());
val registerForm = Form(
tuple(
"user" -> mapping(
"uid" -> optional(number),
"email" -> email,
"password" -> nonEmptyText,
"created_at" -> ignored(currentTimestamp),
"updated_at" -> ignored(currentTimestamp)
) (User.apply)(User.unapply).verifying("Email already exists.", fields => fields match {
case user => {
val result = userDao.findByEmail(user.email)
!result.isDefined
}
}),
"profile" -> mapping(
"firstname"->nonEmptyText,
"lastname"->nonEmptyText,
"gender" -> ignored(0),
"user_id" -> ignored(0)
)(UserProfile.apply)(UserProfile.unapply))
)
Как я мог иметь поле для ввода пароля подтверждения в виде связанного приложения? Я не могу его использовать в модельном классе, поскольку я использую его для своих операций DAO Slick, и не стоило бы иметь еще одно поле со схожими характеристиками.
Благодаря
Я считаю, что у вас здесь два случая использования: один для создания пользователей, а один - для представления пользователя через ваше приложение. Поэтому я бы предложил вам разделить его: создать специальный класс case для создания пользователя и сохранить User и UserProfile для представления вашего пользователя в вашем приложении –
@LouisF. да, я думал об этом, но не будет ли это против принципа DRY? – Maverick
Я думаю, что вы не представляете одну и ту же информацию дважды: в одной руке вы хотите представить, что вы хотите создать пользователя, с другой стороны, вы хотите представлять пользователя. Я считаю, что это путь, иначе это приведет к неуклюжим хакам (вы уже можете наблюдать это с помощью '' '" created_at "-> ignored (currentTimestamp)' ''). Я думаю, вы должны попытаться представить в своих типах ваше намерение. –