Jim, Thanks for that.
What I mean is I want small and large black products attached to two
separate variables, say @blacksmall and @blacklarge.. both separated out
from @products which initially resulted from the Product.where(:color =>
'black) query. I know it's a stupid example, but I'm just wanting that
functionality, and think it would be an improvement in rails to enable
using active record queries on objects that are arrays of objects as they
are represented in the table. If rails treats table rows as model objects
why not treat a collection of model objects in the same way, allowing the
same dsl for access/limiting what's within the collection.
Thanks
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/-/tMSqIOhtcMYJ.
For more options, visit https://groups.google.com/groups/opt_out.