Conditions when using include


#1

Ok,

I have a sales_order table that I need to list. I need to be able to
filter this list of orders by their current route ( or status). Each
sales_order can have many histories associated with it. The most recent
histories associated with a sales_order defines it’s current route. The
histories table has a route_id which corresponds to the route name in
the routes table.

I need to include this current route in my sales_order listing. I have
accomplished this with the following in my controller:

@sales_orders = SalesOrder.find(:all, :include => :routes, :order =>
‘routes.id’)

This works, but the order by part of it doesn’t work at all. Items in
the Engineering route should be all together in the list, but they’re
not. I have yet to find a reason why this doesn’t work. I have been
all over the net and the Rails API and still haven’t found a workaround.

So, I’m trying now to filter the list based on current route. Here’s
the code I have for that:

if request.post?
rid = params[:route][:route_id]
@sales_orders = SalesOrder.find(:all, :include => :histories,
:conditions => [‘histories.route_id = ?’,rid])
end

This doesn’t work either. The log shows one sales_order with a
different status is being pulled from the db:

[4;35;1mHistory Load (0.000000)e[0m e[0mSELECT * FROM histories WHERE
(histories.sales_order_id = 771224) ORDER BY id desc LIMIT 1e[0m

[4;36;1mRoute Load (0.000000)e[0m e[0;1mSELECT * FROM routes WHERE
(routes.id = 29) e[0m

[4;35;1mHistory Load (0.016000)e[0m e[0mSELECT * FROM histories WHERE
(histories.sales_order_id = 771434) ORDER BY id desc LIMIT 1e[0m

[4;36;1mRoute Load (0.000000)e[0m e[0;1mSELECT * FROM routes WHERE
(routes.id = 29) e[0m

[4;35;1mHistory Load (0.000000)e[0m e[0mSELECT * FROM histories WHERE
(histories.sales_order_id = 771582) ORDER BY id desc LIMIT 1e[0m

[4;36;1mRoute Load (0.000000)e[0m e[0;1mSELECT * FROM routes WHERE
(routes.id = 13) e[0m

Why is that last one getting route_id 13? All of the others are getting
route_id 29, which is correct?

Any help that someone can give is much appreciated. I’ve been all over
the net and all over this forum trying to get either an :order or a
:conditions to work, and I can’t make either work.

Thanks,

Jason