# Conditional validation

**URL:** <https://www.ruby-forum.com/t/conditional-validation/95743>\
**Category:** Rails\
**Created:** [June 12, 2006, 11:36am UTC](https://www.ruby-forum.com/t/conditional-validation/95743 "2006-06-12T11:36:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Paolo\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b9e5f3/32.png) [@Paolo\_N](https://www.ruby-forum.com/u/Paolo_N)\
**Post date:** [June 12, 2006, 11:36am UTC](https://www.ruby-forum.com/t/conditional-validation/95743/1 "2006-06-12T11:36:16Z")

</div>

Hi how can I validate a field only if another field is set to a specific  
value?

I tried to use

validates\_length\_of :fieldname, :maximum =\> 100, :if =\>  
:otherfieldname == ‘myvalue’

But doesn’t work

Thanks

Paolo

---

<div class="post-metadata">

**Author:** ![Paolo\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b9e5f3/32.png) [@Paolo\_N](https://www.ruby-forum.com/u/Paolo_N)\
**Post date:** [June 12, 2006, 12:11pm UTC](https://www.ruby-forum.com/t/conditional-validation/95743/2 "2006-06-12T12:11:14Z")

</div>

You can use blocks in your validations.

Try

validates\_length\_of :fieldname, :maximum =\> 100, :if =\> Proc.new{  
|mymodel|  
mymodel.otherfieldname == ‘myvaule’ }

---

<div class="post-metadata">

**Author:** ![Paolo\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b9e5f3/32.png) [@Paolo\_N](https://www.ruby-forum.com/u/Paolo_N)\
**Post date:** [June 12, 2006, 1:15pm UTC](https://www.ruby-forum.com/t/conditional-validation/95743/3 "2006-06-12T13:15:35Z")

</div>

Thanks Daniel

Of course this way it works.

Paolo

2006/6/12, Daniel N [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
