Jodi Showers
2006-Jan-05 22:25 UTC
[Rails] Keep the Queries Down or "Referencing eagerly loaded models"
Before I start, I''ve read the ActiveRecord docs on eager loading, but for the life of me, I can''t seem to get it working. What I mean by this, is that the eager query looks good (I can paste the sql dump, but it looks good to me - and runs well independantly), but it seems that I''m referencing the eagerly loaded data in a way that activerecord doesn''t understand (my assumption) - thus I''m getting a tonne of extra queries. [first, the domain: WorkOrders has_many: WorkOrderItems && WorkOrderItems belongs_to :WorkOrder WorkOrderItems belongs_to :ProductsAndServices secondly, the controller looks like: @work_order = WorkOrder.find(params[:id]) @work_order_items = @work_order.WorkOrderItems.find(:all, :include => [:WorkOrder, :ProductsAndServices ] ) (you''ll note that I''m eagerly loading the work_order from the work_order_item - that''s because the WorkOrderItem model references its work_order for some processing - see "pst" below) And in the view, I reference as such: @work_order_items.each {|item| @work_order_items_table.data << Hash["Part #", item.ProductsAndServices.part_number,"Description", item.description, "Quantity",item.quantity, "Price", number_to_currency(item.price), "Extended", number_to_currency(item.sub_total)]} The above generates @work_order_items.count queries to the ProductsAndServices table. Why is that? Do I reference the eagerly loaded data incorrectly? With the same symptom, further down in the same view I make a call to a WorkOrderItems method "pst" - this method references both eagerly referenced models - WorkOrders and ProductsAndServices using the syntax: #calculate the line item pst def pst if (self.WorkOrder.charge_pst? and self.ProductsAndServices.charge_pst?) sub_total * 0.07 else 0.0 end end Again, I see that database queries are made to retrieve both WorkOrder and ProductsAndServices. Probably the same problem on my part. Any ideas ninjas? Thanx for any help. Jodi -- Posted via http://www.ruby-forum.com/.