I have a model where there are two fields that can technically be null. The field names are :is_activated
and :activated_at
. :activated_at
is only required if :is_activated
is set to true
. It does not need to be present if :is_activated
is false
. What's the appropriate way in Rails to set this validation directly into ActiveRecord?
You can use a Proc on the :activated_at
validator.
validates :activated_at, :presence, if: Proc.new { |a| a.is_activated? }
Recommended Reading:
Finally, you should consider renaming :is_activated
to simply :activated
. This is considered better practice in Rails. The is_
prefix is used in other languages for boolean attributes because their method names don't support a ?
character. Ruby does, and Rails generates ___?
methods on boolean attributes. Because of this it's better to just call the attribute :activated
and check it with activated?
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With