Browse Source

Don't pass validaiton preferences down to associations in Table::save()

Fixes #3873
Jose Lorenzo Rodriguez 11 years ago
parent
commit
7ad59c9ee3
2 changed files with 4 additions and 3 deletions
  1. 3 2
      src/ORM/Table.php
  2. 1 1
      tests/TestCase/ORM/TableTest.php

+ 3 - 2
src/ORM/Table.php

@@ -1136,8 +1136,9 @@ class Table implements RepositoryInterface, EventListener {
 
 		$associated = $options['associated'];
 		$options['associated'] = [];
+		$validate = $options['validate'];
 
-		if ($options['validate'] && !$this->validate($entity, $options)) {
+		if ($validate && !$this->validate($entity, $options)) {
 			return false;
 		}
 
@@ -1153,7 +1154,7 @@ class Table implements RepositoryInterface, EventListener {
 			$this,
 			$entity,
 			$options['associated'],
-			$options->getArrayCopy()
+			['validate' => (bool)$validate] + $options->getArrayCopy()
 		);
 
 		if (!$saved && $options['atomic']) {

+ 1 - 1
tests/TestCase/ORM/TableTest.php

@@ -2106,7 +2106,7 @@ class TableTest extends \Cake\TestSuite\TestCase {
 		$this->assertFalse($table->save($entity, ['validate' => 'custom']));
 		$this->assertNotEmpty($entity->author->errors('thing'));
 
-		$this->assertSame($entity, $table->save($entity), 'default was not used');
+		$this->assertFalse($table->save($entity), 'default was not used');
 	}
 
 /**