玩!和模型验证

时间:2012-07-04 17:19:00

标签: playframework

我一直在使用play 1.2.5rc4开发一个应用程序,我发现了一个有趣的Play行为。请查看以下代码:

User user = new User(some attributes...);
boolean userSaved = user.validateAndSave();

在调用新用户期间,我使用validation.addError()方法添加验证错误。然后我希望在validateAndSave()期间它返回false,因为验证已经包含错误。但事实并非如此。我想知道这是一个bug还是一个功能。我的意思是,当这种行为有用时,有人会想到一些用例吗?

另一个问题是,为什么validateAndSave()不是默认的save()方法?我希望如果我调用user.save()它不会保存违反约束的用户,但显然它确实存在(我有一个例子,其中违反@Unique约束的用户被插入到db中)。知道为什么这个有用吗?让方法save()表现为validateAndSave()然后是一个方法,例如,这不是更好吗? saveWithoutValidation()?我可以看到方法的当前命名导致了很多问题。

1 个答案:

答案 0 :(得分:2)

验证并保存不会查看现有的验证对象,而是验证要求验证的特定对象。

您的第二个问题是因为您可能有一些特定于您的某个屏幕设计的验证,但可能在管理员屏幕上,您希望拥有不同的业务规则。强制对象始终是正确的是对开发人员的限制,不应该被框架强制。