Tim,
Thanks again for the detailed thoughts. It looks like your approach is
structured in a way that should handle what I'm looking for, and provide
a framework for future expansion. I went ahead and implemented it in,
and am trying to resolve an issue now (NoMethodError (undefined method
`values_at') for `search_array_with_hashes' but I'll let you know once
it gets working.
Cheers!
timr wrote:
> Hi again Robert,
> There might be methods build into rails for doing this, but when you
> have a very specific case, you might just roll out your own methods to
> get exactly what you want:
>
> =begin
> given a data structure like @contacts =
> [{:first_name=>'tim', :last_name=>'rand', :id =
> 1},{:first_name=>'jim', :last_name=>'band', :id =>
> 2},{:first_name=>'him', :last_name=>'crand', :id => 3}]
> and given a query may be first, last, or both names
> return id number for matches
> =end
>
> #here is our search array
> @contacts = [{:first_name=>'tim', :last_name=>'rand', :id =>
> 1},{:first_name=>'jim', :last_name=>'band', :id =>
> 2},{:first_name=>'him', :last_name=>'crand', :id => 3},
> {:first_name=>'shim', :last_name=>'crand', :id => 4}]
>
> #method to separate names if more than one is given
> def parse_query(query)
> if query.match(" ")
> name1, name2 = query.split(/ /)
> else
> name1 = query
> return name1.to_a
> end
> return [name1, name2]
> end
>
> #find any name in hash field and return the ids
> def search_array_with_hashes(array_with_name_or_names)
> @hits = []
> #search first names
> array_with_name_or_names.each do |name|
> @contacts.each do |hash|
> @hits << hash[:id] if hash.values.include?(name)
> end
> end
> @hits.uniq
> end
>
> #usage/test case examples
> p search_array_with_hashes(parse_query("band"))
> p search_array_with_hashes(parse_query("tim rand"))
> p search_array_with_hashes(parse_query("crand"))
> # >> [2]
> # >> [1]
> # >> [3, 4]
>
> Will that do the trick?
> Tim
>
> On May 25, 1:23�am, Robert Scott <[email protected]>
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---