# Validates\_uniqueness\_of only if present

**URL:** <https://www.ruby-forum.com/t/validates-uniqueness-of-only-if-present/153615>\
**Category:** Rails\
**Created:** [November 19, 2008, 12:42pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-only-if-present/153615 "2008-11-19T12:42:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [November 19, 2008, 12:42pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-only-if-present/153615/1 "2008-11-19T12:42:27Z")

</div>

Hi - I want to allow duplicate fields values if the field is blank,  
but disallow duplicates if it’s not. Is there a  
validates\_uniqueness\_of\_if\_present equivalent?

Thanks,  
Dino

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [November 19, 2008, 12:54pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-only-if-present/153615/2 "2008-11-19T12:54:13Z")

</div>

You can use :allow\_nil or :allow\_blank attributes to it like

validates\_uniqueness\_of :email, :allow\_nil =\> true

this would skip the validation if field is nil.  
:allow\_blank works same way on empty strings.

And then all/most validations com with the :if and :unless options  
that would allow for more detailed determination if the validation  
should be used

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [November 19, 2008, 1:09pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-only-if-present/153615/3 "2008-11-19T13:09:34Z")

</div>

dino d. wrote:

> Hi - I want to allow duplicate fields values if the field is blank,  
> but disallow duplicates if it’s not. Is there a  
> validates\_uniqueness\_of\_if\_present equivalent?
> 
> Thanks,  
> Dino

Hi,  
As you required to place duplicate value if field is blank than you  
just use  
validates\_uniqueness\_of :field\_name,:allow\_blank =\> ‘true’

:allow\_nil - If set to true, skips this validation if the attribute  
is nil (default is false).

:allow\_blank - If set to true, skips this validation if the attribute  
is blank (default is false).
