Compliant validations 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.
Add this line to your application's Gemfile:
gem 'active_model_warnings'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install active_model_warnings
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
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
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 code of conduct.
- Support for
ActiveModel::Validations::HelperMethods
.
The gem is available as open source under the terms of the MIT License.