# Zip Code/Leading Zero's search problem

**URL:** <https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015>\
**Category:** Rails\
**Created:** [January 3, 2010, 9:29pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015 "2010-01-03T21:29:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 9:29pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/1 "2010-01-03T21:29:05Z")

</div>

Hey

I’m running into an small issue with searching a zip codes table,  
where some zip codes contain 1 or more leading zeros. This problem  
could be fixed with some database level hacking – but I’d rather  
attack the problem in rails.

Zip codes are stored in the zip code table with leading zeros dropped.  
01234 becomes 1234. Thus, when someone searches via the website for  
012345, it will not find any results.

I’m looking to write a method (probably in the Zipcode model) to  
remove any leading zeros from an incoming search request, before it  
gets passed into sql calls.

I looked into callbacks, but those appears to only be useful when  
creating/saving/updating/deleting data, whereas I need to address  
searching.

Any suggestions on the correct/best way to do this? Again, I’m  
looking for a rails solution, not a database level solution.

Thanks

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 9:33pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/2 "2010-01-03T21:33:46Z")

</div>

reg exp

On Sun, Jan 3, 2010 at 3:02 PM, jsoo [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 9:38pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/3 "2010-01-03T21:38:28Z")

</div>

Regex fails on validation even.

Plus just saying reg exp is not very helpful. I’m not sure how to trap  
the  
call before it reaching sql (assuming that is the best way to do it)  
which  
is really what I’m trying to figure out.

Sidebar:

validates\_format\_of :zip\_code, :with =\> /\A[0-9]{5}\Z/i,

## fails on something like this 03062.

Jason S.  
“I’m going to live forever or die trying.”

On Sun, Jan 3, 2010 at 2:32 PM, tom [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Zip codes are stored in the zip code table with leading zeros dropped.
> > 
> > To unsubscribe from this group, send email to  
> > You received this message because you are subscribed to the Google G.  
> > “Ruby on Rails: Talk” group.  
> > To post to this group, send email to removed\_email\_address@domain.invalid.  
> > To unsubscribe from this group, send email to  
> > removed\_email\_address@domain.invalid[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > .  
> > For more options, visit this group at  
> > [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 9:50pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/4 "2010-01-03T21:50:10Z")

</div>

On Jan 3, 2010, at 12:02 PM, jsoo wrote:

> I’m looking to write a method (probably in the Zipcode model) to  
> remove any leading zeros from an incoming search request, before it  
> gets passed into sql calls.
> 
> I looked into callbacks, but those appears to only be useful when  
> creating/saving/updating/deleting data, whereas I need to address  
> searching.
> 
> Any suggestions on the correct/best way to do this? Again, I’m  
> looking for a rails solution, not a database level solution.

Maybe not ideal, but you could always just call to\_i on the parameter  
that gets passed into your find method. That should strip it.

-philip

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 11:20pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/5 "2010-01-03T23:20:19Z")

</div>

be more explicit in your reg exp  
ie the first numeric must be [1-9]

On Sun, Jan 3, 2010 at 1:36 PM, Jason S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Jason S.
> 
> > > ## I’m running into an small issue with searching a zip codes table, gets passed into sql calls.
> 
> [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 3, 2010, 11:23pm UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/6 "2010-01-03T23:23:49Z")

</div>

I ended up solving the problem using Philip’s solution (thanks).

Curtis, thanks for the recommendation, but zero is a valid leading value  
for  
some zip codes, so only doing a range of 1-9 wouldn’t be as tight of a  
check  
as I would’ve liked.

## Thank you all for your help and replies.

Jason S.  
“I’m going to live forever or die trying.”

On Sun, Jan 3, 2010 at 4:18 PM, Curtis Jennings Schofield \<  
removed\_email\_address@domain.invalid\> wrote:

> > is really what I’m trying to figure out.  
> > On Sun, Jan 3, 2010 at 2:32 PM, tom [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> > 
> > > > searching.  
> > > > To post to this group, send email to  
> > > > –
> > 
> > For more options, visit this group at  
> > .  
> > For more options, visit this group at  
> > [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

---

<div class="post-metadata">

**Author:** ![jsoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/73ab20/32.png) [@jsoo](https://www.ruby-forum.com/u/jsoo)\
**Post date:** [January 4, 2010, 12:41am UTC](https://www.ruby-forum.com/t/zip-code-leading-zeros-search-problem/181015/7 "2010-01-04T00:41:06Z")

</div>

Ahh

Jason - Thank you - If i understand your problem in correctly - you  
wanted to turn the value into the database into a non-zipcode format  
to allow for people to search without including the leading zero?

Also - thank you for the information about zero being a leading diget  
for zip codes.

On Sun, Jan 3, 2010 at 3:22 PM, Jason S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On Sun, Jan 3, 2010 at 4:18 PM, Curtis Jennings Schofield
> 
> > > call before it reaching sql (assuming that is the best way to do it)
> > > 
> > > > > could be fixed with some database level hacking – but I’d rather
> > > > 
> > > > [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).  
> > > > removed\_email\_address@domain.invalid.  
> > > > removed\_email\_address@domain.invalid.  
> > > > To unsubscribe from this group, send email to  
> > > > removed\_email\_address@domain.invalid.  
> > > > For more options, visit this group at  
> > > > [http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).

–

You received this message because you are subscribed to the Google  
Groups “Ruby on Rails: Talk” group.  
To post to this group, send email to removed\_email\_address@domain.invalid.  
To unsubscribe from this group, send email to  
removed\_email\_address@domain.invalid.  
For more options, visit this group at  
[http://groups.google.com/group/rubyonrails-talk?hl=en](http://groups.google.com/group/rubyonrails-talk?hl=en).
