ActiveModel::Unvalidate

Intended for working with models outside of your control, ActiveModel::Unvalidate provides methods for cleanly removing existing ActiveModel::Validations validators from existing models. This allows your project to loosen or change the validations to suite the needs of your application without the need to dig into the implmentation details of validations.

Installation

Add this line to your application's Gemfile:

gem 'active_model-unvalidate'

And then execute:

$ bundle

Or install it yourself as:

$ gem install active_model-unvalidate

Usage

Assume a model exists that you cannot modify its original definition.

class Example
  include ActiveModel::Validations

  attr_accessor :name, :email

  validates :name, presence: true, length: { minimum: 2 }
  validates :email, presence: true

  validate :real_email

  private

  def real_email
    unless email =~ /[a-z]+@[a-z]+\.[a-z]{1,5}/
      errors.add(:email, 'is not formatted correctly.')
    end
  end
end

With active_model-unvalidate included in your bundle, the Unvalidate methods are automatically available to any class that includes ActiveModel::Validations. Here you can remove individual validations on specific fields or attributes, such as the length validator on name. You can also remove a method-base validation, such as the real_email validator.

class Example
  unvalidates :name, :length
  unvalidate :real_email
end

You can also remove all validations associated to a specific field/attribute.

class Example
  unvalidates :name
  unvalidates :email

  unvalidate :real_email
end

This would remove all the validations provided in the example, allowing your application to either redefine new validation rules or leave the model without validations.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/weblinc/activemodel-unvalidate.

License

The gem is available as open source under the terms of the MIT License.