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: 1. I need to pull all products in the database for a simple list: @products = Products.find(:all) 2. 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. -- Posted via http://www.ruby-forum.com/.
On Apr 23, 6:10 am, Robert Scott <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> 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: > > 1. I need to pull all products in the database for a simple list: > @products = Products.find(:all) > > 2. 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.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> -- > Posted viahttp://www.ruby-forum.com/.
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 Catena. On Apr 23, 2:10 am, Robert Scott <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> 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: > > 1. I need to pull all products in the database for a simple list: > @products = Products.find(:all) > > 2. 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. > -- > Posted viahttp://www.ruby-forum.com/.