@@ -759,44 +759,27 @@ protected function buildUniqueExclusionRules(array $rules = array()) {
759759 $ ruleset = (is_string ($ ruleset ))? explode ('| ' , $ ruleset ) : $ ruleset ;
760760
761761 foreach ($ ruleset as &$ rule ) {
762- if (strpos ($ rule , 'unique ' ) === 0 ) {
763- $ params = explode (', ' , $ rule );
764-
765- $ uniqueRules = array ();
766-
767- // Append table name if needed
768- $ table = explode (': ' , $ params [0 ]);
769- if (count ($ table ) == 1 )
770- $ uniqueRules [1 ] = $ this ->table ;
771- else
772- $ uniqueRules [1 ] = $ table [1 ];
773-
774- // Append field name if needed
775- if (count ($ params ) == 1 )
776- $ uniqueRules [2 ] = $ field ;
777- else
778- $ uniqueRules [2 ] = $ params [1 ];
779-
780- if (isset ($ this ->primaryKey )) {
781- $ uniqueRules [3 ] = $ this ->{$ this ->primaryKey };
782- $ uniqueRules [4 ] = $ this ->primaryKey ;
783- }
784- else {
785- $ uniqueRules [3 ] = $ this ->id ;
762+ if (strpos ($ rule , 'unique ' ) === 0 ) {
763+ $ params = explode (', ' , $ rule );
764+
765+ // Append field name if needed
766+ if (count ($ params ) == 1 ) {
767+ $ params [1 ] = $ field ;
768+ }
769+
770+ // if the 3rd param was set, do not overwrite it
771+ if (!is_numeric (@$ params [2 ])) $ params [2 ] = $ this ->id ;
772+
773+ $ rule = implode (', ' , $ params );
786774 }
787-
788- $ rule = 'unique: ' . implode (', ' , $ uniqueRules );
789- } // end if strpos unique
790-
791- } // end foreach ruleset
775+ }
792776 }
793-
777+
794778 return $ rules ;
795779 }
796780
797781 /**
798- * Update a model, but filter uniques first to ensure a unique validation rule
799- * does not fire
782+ * Update a model already saved in the database.
800783 *
801784 * @param array $rules
802785 * @param array $customMessages
0 commit comments