On 3 November 2012 21:43, Abram <[email protected]> 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")

That should work, does it not for you?

Colin

 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/-/NXanwmpoOAcJ.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

-- 
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 https://groups.google.com/groups/opt_out.


Reply via email to