module Jennifer::Validations::Macros
Direct including types
Defined in:
jennifer/validations/macros.crMacro Summary
-
validates_absence(field, if if_value = nil)
Validates that the specified attribute is absent.
-
validates_acceptance(field, accept = nil, if if_value = nil)
Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement).
-
validates_confirmation(field, case_sensitive = true, if if_value = nil)
Encapsulates the pattern of wanting to validate a password or email address field with a confirmation.
-
validates_exclusion(field, in in_value, allow_blank = false, if if_value = nil)
Validates that the value of the specified attribute is not in the given enumerable object.
-
validates_format(field, value, allow_blank = false, if if_value = nil)
Validates whether the value of the specified attribute field is of the correct form by matching it against the regular expression value.
-
validates_inclusion(field, in in_value, allow_blank = false, if if_value = nil)
Validate whether the value of the specified attribute is included in the given enumerable object.
-
validates_length(field, if if_value = nil, **options)
Validates that the specified attribute matches the length restrictions supplied.
-
validates_numericality(field, if if_value = nil, **options)
Validates whether the value of the specified attribute satisfies given comparison condition.
-
validates_presence(field, if if_value = nil)
Validates that the specified attributes are not blank.
-
validates_uniqueness(*fields, allow_blank allow_blank_value = false, if if_value = nil)
Validates whether the value of the specified attributes are unique across the system.
-
validates_with(klass, *args, if if_value = nil, **options)
Passes the record off to an instance of the class specified and allows them to add errors based on more complex conditions.
-
validates_with_method(*names, if if_value = nil)
Adds a validation method to the class.
Macro Detail
Validates that the specified attribute is absent.
class Article < Jennifer::Model::Base
mapping( # ...
)
validates_absence :title
end
Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement).
This check is performed only if field is not nil.
class User < Jennifer::Model::Base
mapping( # ...
)
property terms_of_service = false
property eula : String?
validates_acceptance :terms_of_service
validates_acceptance :eula, accept: %w(true accept yes)
end
Encapsulates the pattern of wanting to validate a password or email address field with a confirmation.
class User < Jennifer::Model::Base
mapping(
# ...
email: String?,
address: String?
)
property email_confirmation : String?, address_confirmation : String?
validates_confirmation :email
validates_confirmation :address, case_insensitive: true
end
Validates that the value of the specified attribute is not in the given enumerable object.
class Country < Jennifer::Base::Model
mapping(
# ...
code: String
)
validates_exclusion :code, in: %w(AA DD)
end
Validates whether the value of the specified attribute field is of the correct form by matching it against the regular expression value.
class Contact < Jennifer::Model::Base
mapping(
# ...
street: String
)
validates_format :street, /st\.|street/i
end
Validate whether the value of the specified attribute is included in the given enumerable object.
class User < Jennifer::Base::Model
mapping(
# ...
country_code: String
)
validates_inclusion :code, in: Country::KNOWN_COUNTRIES
end
Validates that the specified attribute matches the length restrictions supplied.
Only one option can be used at a time:
- minimum
- maximum
- is
- in
class User < Jennifer::Model::Base
mapping( # ...
)
validates_length :name, minimum: 2
validates_length :login, in: 4..16
validates_length :uid, is: 16
end
Validates whether the value of the specified attribute satisfies given comparison condition.
Configuration options:
- greater_than
- greater_than_or_equal_to
- equal_to
- less_than
- less_than_or_equal_to
- odd
- even
class Player < Jennifer::Model::Base
mapping(
# ...
health: Float64,
)
validates_numericality :health, greater_than: 0
end
Validates that the specified attributes are not blank.
class User < Jennifer::Model::Base
mapping(
# ...
email: String?
)
validates_presence :email
end
Validates whether the value of the specified attributes are unique across the system.
Because this check is performed outside the database there is still a chance that duplicate values will be inserted in two parallel transactions. To guarantee against this you should create a unique index on the field.
class Country < Jennifer::Model::Base
mapping(
# ...
code: String
)
validate_uniqueness :code
end
Passes the record off to an instance of the class specified and allows them to add errors based on more complex conditions.
class EnnValidator < Jennifer::Validations::Validator
def validate(record : Passport)
record.errors.add(:enn, "Invalid enn") if record.enn!.size < 4
end
end
class Passport < Jennifer::Model::Base
mapping(
enn: {type: String, primary: true}
)
validates_with EnnValidator
end
Adds a validation method to the class.
class User < Jennifer::Model::Base
# ...
validates_with_method :thirteen
def thirteen
errors.add(:id, "Can't be 13") if id == 13
end
end