# Hanami::Validations Validations mixin for Ruby objects ## v2.0.0.rc1 - 2022-11-08 ## v2.0.0.beta4 - 2022-10-24 ### Changed - [Tim Riley] Require latest dry-validation (to ensure best compatibility with Zeitwerk-enabled dry-rb gems) (#224) ## v2.0.0.beta1 - 2022-07-20 ### Added - [Luca Guidi] Official support for Ruby: MRI 3.1 ## v2.0.0.alpha2 - 2021-05-04 ### Added - [Luca Guidi] Official support for Ruby: MRI 3.0 ### Changed - [Luca Guidi] Drop support for Ruby: MRI 2.4, 2.5 ## v2.0.0.alpha1 - 2019-07-26 ### Added - [Luca Guidi] Introduced `Hanami::Validator` - [Luca Guidi] Added support to validate JSON data - [Luca Guidi] Added rules - [Luca Guidi] Allow to inherit validations from superclasses (e.g. `ApplicationValidator < Hanami::Validator` => `SignupValidator < ApplicationValidator`) - [Luca Guidi] Allow to error messages to receive arbitrary information as a `Hash` (e.g. `error_code: 123`), which will be interpolated in the final error message. - [Luca Guidi] Added support for validator external dependencies ### Changed - [Luca Guidi] Drop support for Ruby: MRI 2.3, JRuby 9.1. - [Luca Guidi] New validation syntax - [Luca Guidi] Removed custom predicates (`Hanami::Validations.predicate`) - [Luca Guidi] Removed global custom predicates (`Hanami::Validations::Predicates`) - [Luca Guidi] Removed messages path setting (`Hanami::Validations.messages_path=`) - [Luca Guidi] Removed messages namespace setting (`Hanami::Validations.namespace`) - [Luca Guidi] Removed messages engine setting (`Hanami::Validations.messages`) ## v1.3.7 - 2021-01-06 ### Fixed - [Panagiotis Matsinopoulos] Ensure `predicate` and `predicates` to work together ## v1.3.6 - 2020-01-08 ### Added - [Luca Guidi] Official support for Ruby: MRI 2.7 ## v1.3.5 - 2019-07-26 ### Fixed - [ippachi] Ensure I18n doesn't crash when used for inline predicates ## v1.3.4 - 2019-07-26 ### Fixed - [Luca Guidi] Ensure to load i18n backend (including `i18n` gem), when messages engine is `:i18n` ## v1.3.3 - 2019-01-31 ### Fixed - [Luca Guidi] Depend on `dry-validation` `~> 0.11`, `< 0.12` - [Luca Guidi] Depend on `dry-logic` `~> 0.4.2`, `< 0.5` ## v1.3.2 - 2019-01-30 ### Fixed - [Luca Guidi] Depend on `dry-validation` `~> 0.11.2`, `< 0.12` in order to skip non compatible `dry-logic` `0.5.0` ## v1.3.1 - 2019-01-18 ### Added - [Luca Guidi] Official support for Ruby: MRI 2.6 - [Luca Guidi] Support `bundler` 2.0+ ## v1.3.0 - 2018-10-24 ## v1.3.0.beta1 - 2018-08-08 ### Added - [Luca Guidi] Official support for JRuby 9.2.0.0 ## v1.2.2 - 2018-06-05 ### Fixed - [Luca Guidi] Revert dependency to `dry-validation` to `~> 0.11`, `< 0.12` ## v1.2.1 - 2018-06-04 ### Fixed - [Luca Guidi] Bump dependency to `dry-validation` to `~> 0.12` ## v1.2.0 - 2018-04-11 ## v1.2.0.rc2 - 2018-04-06 ## v1.2.0.rc1 - 2018-03-30 ## v1.2.0.beta2 - 2018-03-23 ## v1.2.0.beta1 - 2018-02-28 ### Added - [Luca Guidi] Official support for Ruby: MRI 2.5 ## v1.1.0 - 2017-10-25 ## v1.1.0.rc1 - 2017-10-16 ## v1.1.0.beta3 - 2017-10-04 ## v1.1.0.beta2 - 2017-10-03 ## v1.1.0.beta1 - 2017-08-11 ## v1.0.0 - 2017-04-06 ## v1.0.0.rc1 - 2017-03-31 ## v1.0.0.beta2 - 2017-03-17 ## v1.0.0.beta1 - 2017-02-14 ### Added - [Luca Guidi] Official support for Ruby: MRI 2.4 ### Fixed - [Luca Guidi] Don't let inline predicates to discard other YAML error messages ## v0.7.1 - 2016-11-18 ### Fixed - [Luca Guidi] Ensure custom validators to work with concrete classes with name ## v0.7.0 - 2016-11-15 ### Changed - [Luca Guidi] Official support for Ruby: MRI 2.3+ and JRuby 9.1.5.0+ ## v0.6.0 - 2016-07-22 ### Added - [Luca Guidi] Predicates syntax - [Luca Guidi] Custom predicates - [Luca Guidi] Inline predicates - [Luca Guidi] Shared predicates - [Luca Guidi] High level rules - [Luca Guidi] Error messages with I18n support (`i18n` gem) - [Luca Guidi] Introduced `Hanami::Validations#validate`, which returns a result object. - [Luca Guidi] Introduced `Hanami::Validations::Form` mixin, which must be used when input comes from HTTP params or web forms. ### Fixed – [Luca Guidi] Ensure to threat blank values as `nil` ### Changed – [Luca Guidi] Drop support for Ruby 2.0, 2.1 and Rubinius. Official support for JRuby 9.0.5.0+. - [Luca Guidi] Validations must be wrapped in `.validations` block. - [Luca Guidi] Removed `.attribute` DSL. A validator doesn't create accessors (getters/setters) for validated keys. - [Luca Guidi] Removed `Hanami::Validations#valid?` in favor of `#validate`. - [Luca Guidi] Error messages are accessible via result object. Eg. `result.errors` or `result.errors(full: true)` - [Luca Guidi] Coerced and sanitized data is accessible via result object. Eg. `result.output` ## v0.5.0 - 2016-01-22 ### Changed - [Luca Guidi] Renamed the project ## v0.4.0 - 2016-01-12 ## Changed - [Hélio Costa e Silva & Luca Guidi] Ignore blank values for format and size validation ### Fixed - [Pascal Betz] Ensure acceptance validation to reject blank strings ## v0.3.3 - 2015-09-30 ### Added - [Luca Guidi] Official support for JRuby 9k+ ## v0.3.2 - 2015-05-22 ### Added - [deepj] Introduced `Lotus::Validations#invalid?` ## v0.3.1 - 2015-05-15 ### Fixed - [Luca Guidi] Fixed Hash serialization for nested validations. It always return nested `::Hash` structure. - [Alfonso Uceda Pompa & Dmitry Tymchuk] Fixed Hash serialization when `Lotus::Entity` is included in the same class. ## v0.3.0 - 2015-03-23 ## v0.2.4 - 2015-01-30 ### Added - [Steve Hodgkiss] Introduced `Lotus::Validations::Error#attribute_name` - [Steve Hodgkiss] Nested validations ### Changed - [Steve Hodgkiss] `Lotus::Validations::Error#name` returns the complete attribute name (Eg. `first_name` or `address.street`) ## v0.2.3 - 2015-01-12 ### Added - [Luca Guidi] Compatibility with Lotus::Entity ### Fixed - [Luca Guidi] Ensure `.validates` usage to not raise `ArgumentError` when `:type` option is passed - [Luca Guidi] Ensure to assign attributes when only `.validates` is used ## v0.2.2 - 2015-01-08 ### Added - [Steve Hodgkiss] Introduced `Validations.validates`. It defines validations, for already existing attributes. ## v0.2.1 - 2014-12-23 ### Added - [Luca Guidi] Introduced `Validations::Errors#to_h` and `to_a` - [Luca Guidi] Introduced `Validations::Errors#any?` - [Luca Guidi] Official support for Ruby 2.2 ### Fixed - [Satoshi Amemiya] Made `Validations#valid?` idempotent ## v0.2.0 - 2014-11-23 ### Added - [Luca Guidi] Skip attribute whitelisting when a validator does not define any attribute - [Luca Guidi] Official support for Rubinius 2.3+ - [Luca Guidi] Implemented `#each` in order to allow bulk operations on attributes - [Luca Guidi] Implemented `#to_h` to make validations usable by other libraries - [Luca Guidi] Made `#initialize` to accept Hashes with strings as keys, but only for declared attributes - [Luca Guidi] Lazy coercions, from now on `valid?` is not required to obtain a coerced value from a single attribute - [Rik Tonnard] Made validators reusable by allowing infinite inclusion ## v0.1.0 - 2014-10-23 ### Added - [Luca Guidi] Made `#initialize` to accept any object that implements `#to_h` - [Luca Guidi] Custom coercions for user defined classes - [Luca Guidi] Raise an exception at the load time when a validation is not recognized - [Luca Guidi] Allow validators inheritance - [Luca Guidi] Confirmation validation - [Luca Guidi] Exclusion validation - [Luca Guidi] Size validation - [Luca Guidi] Acceptance validation - [Jeremy Stephens] Inclusion validation - [Luca Guidi] Format validation - [Luca Guidi] Presence validation - [Luca Guidi] Coercions - [Luca Guidi] Basic module inclusion - [Luca Guidi] Official support for JRuby 1.7+ (with 2.0 mode) - [Luca Guidi] Official support for MRI 2.0+ ### Fixed - [Jeremy Stephens] Ensure to not fail validations when coerce falsey values - [Luca Guidi] Ensure `Lotus::Validations#valid?` to be idempotent