This is probably a basic question, but I was wondering if / how it’s
possible to run a find on an existing hash.
For instance:
-
I need to pull all products in the database for a simple list:
@products = Products.find(:all)
-
At a separate portion of the page, I want to display products that
are in, say, category 5.
From scratch, I could run…
@new_products = Products.find(:all, :conditions => {:category_id => 5})
Although, I thought you could also do
@new_products = @products.find(:all, :conditions => {:category_id = 2})
My query has been returning a wrong number of arguments (2 for 1), so I
wasn’t sure if I was headed on the right track.
On Apr 23, 6:10 am, Robert S. [email protected]
wrote:
From scratch, I could run…
@new_products = Products.find(:all, :conditions => {:category_id => 5})
Although, I thought you could also do
@new_products = @products.find(:all, :conditions => {:category_id = 2})
My query has been returning a wrong number of arguments (2 for 1), so I
wasn’t sure if I was headed on the right track.
Enumerables (and thus arrays) have a method called find, but it’s not
an activerecord find and so has different syntax. Check the ruby
standard library api for details of enumerable’s find.
Fred
In the Enumerable’s find_all method will be:
@products.find_all { |product| product.category_id = 2 }
This method returns an array, the find method returns only the first
match. This approach is not the best if you have a lot of products, in
that case you will use the ActiveRecord’s find and let the database do
this work in a more efficient way.
Regards.
Franco C…
On Apr 23, 2:10 am, Robert S. [email protected]