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 [email protected].
To unsubscribe from this group, send email to
[email protected].
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.