Permalink
Browse files

Changed default value for option 'validate' to 'first' in Model::save…

…All(). Also fixed issue where the return array contained more keys then number of records in data array itself with options 'validate =>'first' and 'atomic'=>false
  • Loading branch information...
1 parent 7b28fde commit d365fafe4d4fe06621c71383ccbf52b00228726c @ADmad ADmad committed Mar 27, 2010
Showing with 11 additions and 8 deletions.
  1. +6 −4 cake/libs/model/model.php
  2. +5 −4 cake/tests/cases/libs/model/model_write.test.php
View
@@ -1556,9 +1556,9 @@ function _prepareUpdateFields($data) {
*
* #### Options
*
- * - validate: Set to false to disable validation, true to validate each record before
- * saving, 'first' to validate *all* records before any are saved, or 'only' to only
- * validate the records, but not save them.
+ * - validate: Set to false to disable validation, true to validate each record before saving,
+ * 'first' to validate *all* records before any are saved (default),
+ * or 'only' to only validate the records, but not save them.
* - atomic: If true (default), will attempt to save all records in a single transaction.
* Should be set to false if database/table does not support transactions.
* - fieldList: Equivalent to the $fieldList parameter in Model::save()
@@ -1579,7 +1579,7 @@ function saveAll($data = null, $options = array()) {
}
$db =& ConnectionManager::getDataSource($this->useDbConfig);
- $options = array_merge(array('validate' => true, 'atomic' => true), $options);
+ $options = array_merge(array('validate' => 'first', 'atomic' => true), $options);
$this->validationErrors = $validationErrors = array();
$validates = true;
$return = array();
@@ -1626,6 +1626,7 @@ function saveAll($data = null, $options = array()) {
break;
case ($options['validate'] === 'first'):
$options['validate'] = true;
+ $return = array();
continue;
break;
default:
@@ -1731,6 +1732,7 @@ function saveAll($data = null, $options = array()) {
break;
case ($options['validate'] === 'first'):
$options['validate'] = true;
+ $return = array();
continue;
break;
default:
@@ -2871,7 +2871,8 @@ function testSaveAllAtomic() {
'title' => '',
'body' => 'Trying to get away with an empty title'
)
- ), array('atomic' => false));
+ ), array('validate' => true, 'atomic' => false));
+
$this->assertIdentical($result, array(true, false));
$result = $TestModel->saveAll(array(
@@ -2887,7 +2888,7 @@ function testSaveAllAtomic() {
'published' => 'Y',
'user_id' => 2
))
- ), array('atomic' => false));
+ ), array('validate' => true, 'atomic' => false));
$this->assertIdentical($result, array('Article' => true, 'Comment' => array(true, true)));
}
@@ -2985,7 +2986,7 @@ function testSaveAllHasManyValidation() {
'Comment' => array(
array('comment' => '', 'published' => 'Y', 'user_id' => 1),
)
- ));
+ ), array('validate' => true));
$expected = array('Comment' => array(false));
$this->assertEqual($result, $expected);
@@ -3318,7 +3319,7 @@ function testSaveAllValidation() {
'title' => '',
'body' => 'Trying to get away with an empty title'
));
- $result = $TestModel->saveAll($data, array('atomic' => false));
+ $result = $TestModel->saveAll($data, array('validate' => true, 'atomic' => false));
$this->assertEqual($result, array(true, false));
$result = $TestModel->find('all', array('recursive' => -1, 'order' => 'Post.id ASC'));
$errors = array(1 => array('title' => 'This field cannot be left blank'));

0 comments on commit d365faf

Please sign in to comment.