2014-09-17 7 views
0

Я очень удивлен, что это не распространяется на документацию, которую я читал, или я просто упустил ее из виду. Проверка уникальных записей кажется чем-то обычным местом.Проверка уникальной записи?

При создании новой записи из формы, что является предпочтительным методом проверки уникальности элемента?

val memberForm = Form(
    mapping(
     "id" -> ignored(NotAssigned:Pk[Long]), 
     "membername" -> nonEmptyText, 
     "email" -> email, 
     "password" -> nonEmptyText 
    )(Member.apply)(Member.unapply) 
) 

Является предпочтительным методом создания пользовательского валидатора?

val validateMember(name: String, email: String) = { 
    // check unique name & email 
} 

Или это должно быть сделано другим способом?

ответ

0

Возможно, это был не самый большой вопрос, так как я считаю, что это просто случай, когда я слишком задумывался над проблемой и не понимал проблему. Решение, которое я придумал было довольно прямо вперед:

val memberForm = Form(
    mapping(
     "id" -> ignored(NotAssigned:Pk[Long]), 
     "membername" -> nonEmptyText, 
     "email" -> email, 
     "password" -> nonEmptyText 
)(Member.apply)(Member.unapply) 
    verifying ("Member already exists!", m => Member.findByName(m.membername).isEmpty) 
    verifying ("Email already exists!", m => Member.findByName(m.email).isEmpty) 
) 

Где Member.findByName() имеет логику в нем, чтобы определить, если он смотрит на электронную почту или стандартный MemberName.

Это, вероятно, не очень хороший вопрос и ответ, поэтому, если кто-либо имеет право удалять его, не стесняйтесь.

1

Мне обычно нравится думать об этом как о логике бизнеса, а не о проверке (поскольку речь идет о разговоре с базой данных). Если вы согласитесь с этим, тогда лучше было бы поместить логику проверки уникальности в контроллер после прочтения данных формы в экземпляр Member.

Вы все еще можете просмотреть страницу с формой с ошибкой, если она неверна.

+0

Спасибо. Но я думаю, что мой вопрос был плохим. В моем ответе я вроде как сделал что-то подобное. –

Смежные вопросы