public override bool Perform(object instance, object fieldValue) { ActiveRecordValidationBase arInstance = (ActiveRecordValidationBase)instance; ActiveRecordModel model = ActiveRecordBase.GetModel(arInstance.GetType()); while (model != null) { if (model.Ids.Count != 0) { _pkModel = model.Ids[0] as PrimaryKeyModel; } model = model.Parent; } if (_pkModel == null) { throw new ValidationFailure("We couldn't find the primary key for " + arInstance.GetType().FullName + " so we can't ensure the uniqueness of any field. Validatior failed"); } _fieldValue = fieldValue; return((bool)arInstance.Execute(new NHibernateDelegate(CheckUniqueness))); }
private void ValidateInstances(object instances, ParameterInfo param) { Type instanceType = instances.GetType(); ActiveRecordValidationBase[] records = null; if (instanceType.IsArray) { records = instances as ActiveRecordValidationBase[]; } else if (typeof(ActiveRecordValidationBase).IsAssignableFrom(instanceType)) { records = new ActiveRecordValidationBase[] { (ActiveRecordValidationBase)instances }; } if (records != null) { foreach (ActiveRecordValidationBase record in records) { if (!record.IsValid()) { throw new RailsException("ARSmartDispatchController: Error validating {0} {1}\n{2}", param.ParameterType.FullName, param.Name, string.Join("\n", record.ValidationErrorMessages)); } } } }
internal static void SaveInstance(object instance, Controller controller, ArrayList errors, IDictionary prop2Validation) { if (instance is ActiveRecordValidationBase) { ActiveRecordValidationBase instanceBase = instance as ActiveRecordValidationBase; if (!instanceBase.IsValid()) { errors.AddRange(instanceBase.ValidationErrorMessages); prop2Validation = instanceBase.PropertiesValidationErrorMessage; } else { instanceBase.Save(); } } else { ActiveRecordBase instanceBase = instance as ActiveRecordBase; instanceBase.Save(); } }