Skip to content

Instantly share code, notes, and snippets.

@mashijp
Last active August 29, 2015 13:55
Show Gist options
  • Save mashijp/8768399 to your computer and use it in GitHub Desktop.
Save mashijp/8768399 to your computer and use it in GitHub Desktop.
バリデーションを全部Formのところに追いやった(play framework)
/**
* プロバイダ編集・追加フォーム
*
* @param provider 追加時はNone, 編集時は編集対象を渡す
*/
private def providerForm(provider: Option[Provider] = None) = Form(
mapping(
"name" -> text.verifying(Provider.isValidName _),
"alias" -> text.verifying(Provider.isValidAlias _).verifying("既にこのAliasは使われています", alias => {
withDatabaseSession {
implicit ds =>
provider.map(_.alias).exists(_ == alias) || new ProviderRepository().findByAlias(alias).isEmpty
}
})
)((name, alias) =>
provider.map {
p =>
p.copy(name = name, alias = alias)
}.getOrElse(Provider(id = Provider.generateId(), name = name, alias = alias))
)(e => Some((e.name, e.alias)))
)
@mashijp
Copy link
Author

mashijp commented Feb 2, 2014

コレジャナイ感がすごい

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment