# ActiveModelWarnings [](http://badge.fury.io/rb/active_model_warnings) [](https://travis-ci.org/babasbot/active_model_warnings) [](https://coveralls.io/github/babasbot/active_model_warnings?branch=master) [](https://codeclimate.com/github/babasbot/active_model_warnings) Compliant validtions for ActiveModel. This is useful when you want to define optional validations for a resource and keep it valid. Adds `compliant?` and `warnings` methods to `ActiveModel::Validations` that are similar to `valid?` and `errors` but for warnings. See [ActiveModel::Validations](http://api.rubyonrails.org/classes/ActiveModel/Validations.html). ## Installation Add this line to your application's Gemfile: ```ruby gem 'active_model_warnings' ``` And then execute: $ bundle install Or install it yourself as: $ gem install active_model_warnings ## Usage ### ActiveRecord ```ruby class User < ActiveRecord::Base attr_accessor :password validate :password_length # may cause an error validate :blank_password # may cause a warning private def password_length warnings.add(:password, "min length should be 5") if password.length < 5 end def blank_password errors.add(:password, 'should not be blank') if password.length == 0 end end user = User.new(:password => 'safe') user.valid? # => true user.compliant? # => false ``` ### ActiveModel ```ruby class User include ActiveModel::Validations attr_accessor :password validate :blank_password # may cause an error validate :password_length # may cause a warning def initialize(password) @password = password end private def blank_password errors.add(:password, 'should not be blank') if password.length == 0 end def password_length warnings.add(:password, "min length should be 5") if password.length < 5 end end user = User.new('safe') user.valid? # => true user.compliant? # => false ``` ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/babasbot/active_model_warnings. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. ## TODO - Support for `ActiveModel::Validations::HelperMethods`. ## License The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).