Well, it does, but it hits the DB again.

On Sunday, November 4, 2012 10:43:29 AM UTC+13, Abram wrote:
>
> When I began learning rails I found it frustrating that array and active 
> record relation objects could not be queried in the same fashion as 
> database tables. Before too much confusion let me explain.
>
>
> When I want something from a database table I simply write something like: 
> Product.where(:color=>'black') NOW, if I put a .to_sql after that statement 
> I see something like "SELECT \"styles\".* FROM \"styles\" WHERE 
> \"styles\".\"color\" = 'black'"
>
>
> So clearly, rails is magically converting that friendly statement into 
> something more meaningful to the backend. That's fantastic and makes my 
> life wonderful.
>
>
> So here's my problem.. after running the query I am returned an active 
> record relation, which let's say is called @products. Now, let's say I want 
> to further break that list of products into products that are big and 
> small. This would require one of two things.. either I must hit the 
> database twice being more selective, or I must iterate over @products using 
> a block and such ruby magic as collect/map/select/etc...
>
>
> To me neither of the above is a great option, and I must admit while 
> learning ruby on rails this was one of the biggest stumbling blocks for me, 
> and one that has produced a massive amount of stackoverflow headaches for 
> many others.
>
>
> My suggestion to rails developers is to make rails more accessible to 
> beginners by allowing programmers to apply the same simplicity of writing 
> an active record query to querying an active record relation object or 
> array of model objects.
>
>
> For example, I want to now take @products and say:
>
>
> @products.where(:size=>"small") and have this converted automagically by 
> rails to the appropriate statement @products.select{|product| product.size 
> == 'small'}
>
>
> I suppose this could work if rails were to query the object type first 
> before performing the query. Is the object type an array or active record 
> relation, and is it in the expected format (collection of appropriate 
> objects)? If it is, then treat it as a virtual table and instead of 
> performing an sql query, hit it with a select block, etc.
>
>
> I know understanding the underlying ruby code is good, and at times would 
> be preferable to using active record style commands.. but for new users 
> getting off the ground, I think having both options would be beneficial. 
> Also, I feel it would be more consistency to the framework generally.
>
>
> I have also posted this at reddit 
> http://www.reddit.com/r/rails/comments/12kyho/suggestion_for_rails_4_what_are_pros_and_cons/
>

-- 
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/SXFUfrCGCa8J.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to