Thanks Jeremy.  It's a big table so I was hoping to retrieve the 2-5 rows
at one time per order and then compare in memory to my other dataset vs
having to go back to the table 2-5 times per order and compare each row.
It's an indexed read so it should probably be fine.  If I have issues I'll
adjust.  Thanks again!!

On Wed, Nov 20, 2019 at 3:16 PM Jeremy Evans <[email protected]> wrote:

> On Wednesday, November 20, 2019 at 1:21:41 PM UTC-8, Mason Kimble wrote:
>>
>> Basically, can I filter a dataset after it goes to the database?
>>
>> order_items = OrderItem.dataset.where(order_id: orderId).all (I know this
>> would query database)
>>
>> orders_items_to_match.each { | match_item |
>>     matching_item = order_items.where(item_id:
>> match_item['orderItemId']).first  (Does this go back to database or in
>> memory)
>>
>
> This doesn't work.  order_items is an array, not a dataset.
>
> }
>>
>> 1. Is order_items an array of OrderItem models or a dataset?
>>
>
> An array.  If you want a dataset, leave off the .all
>
>
>> 2. If dataset, would .first execute query in memory to match item_id or
>> would it go back to the database
>>
>
> Datasets always query the Database when asked for results.
>
>
>> 3. Is there another way to do this?  Basically I want to load all the
>> Children for a Parent from the database and then filter the Children in
>> memory and return a Model if a match is found.
>>
>
> You could probably use `order_items.find{|item| ...}`  for what you are
> describing.  This will return the first matching OrderItem if the block
> ever returns true, and nil if the block never returns true.
>
> This is kind of a smell though, and should definitely be avoided if
> order_items can be a large array. You should see if it is possible to do
> the query you want in the database in a single query using a join or
> subquery.
>
> Thanks,
> Jeremy
>
> --
> You received this message because you are subscribed to the Google Groups
> "sequel-talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sequel-talk/2126f06a-2e63-48fd-b2f3-5c37848b195c%40googlegroups.com
> <https://groups.google.com/d/msgid/sequel-talk/2126f06a-2e63-48fd-b2f3-5c37848b195c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/CAEWSjwLccmgOjMYDL4xnF6WkxWV8xiU6qfZSMTXCxJCBcM0iuQ%40mail.gmail.com.

Reply via email to