Ben
Ben

Reputation: 2578

Ember-Validations - Don't validate automatically

I am using ember-validations to validate a model in a form.

If I create the record with createRecord the instance of the model is already validated and therefore the form already shows validations errors before the user inputs values.

I just want to validate the model before submitting the form. Is there a way?

Upvotes: 3

Views: 635

Answers (2)

esbanarango
esbanarango

Reputation: 1637

There is another alternative to ember-validations. ember-model-validator, with this addon you decide when to validate. By including Ember-model-validator's mixin into your model, this will add a validate function to your model, it is a synchronous function which returns either true or false.

There is support for all these validations:

Example:

// Your model
import Validator from '../mixins/model-validator';

export default DS.Model.extend(Validator, {
  email: DS.attr('string'),
  password: DS.attr('string'),
  passwordConfirmation: DS.attr('string'),

  validations: {
    email: {
      presence: true,
      email: { message: 'is not a valid email' }
    },
    password: {
      presence: true,
      length: {
        minimum: 6
      }
    },
    passwordConfirmation: {
      presence: true,
      match: 'password'
    }
  }
});
import Ember from 'ember';

export default Ember.Route.extend(
  {
    actions: {
      saveFakeModel: function() {
        var _this = this,
            fakeModel = this.get('model');

        if(fakeModel.validate()){
          fakeModel.save().then(
            // Success
            function() {
              // Alert success
              console.log('ooooh yeah we just saved the FakeModel...');
            },

            // Error handling
            function(error) {
              // Alert failure
              console.log('There was a problem saving the FakeModel...');
              console.log(error);
            }
          );
        }else{
          fakeModel.get('errors');
        }
      },
    }
  }
);

Upvotes: 0

espiritudelvino
espiritudelvino

Reputation: 31

You need to add a conditional validator ('if' or 'unless') and activate it only when submitting the form.

Here is a quick example: http://jsbin.com/letujimu/1/edit?html,js,output

Upvotes: 3

Related Questions