Thanks guys, that did the trick.
-Zubin

On Oct 29, 9:35 pm, Tarmo Tänav <[EMAIL PROTECTED]> wrote:
> This probably happens because you're in development mode where
> the AR model classes are not all automatically loaded, so if you find
> through Order you only get Order and ItemCollection because neither
> is aware of the existance of ReplenishmentOrder until it has been
> loaded.
>
> A hack fix for this is to put:
> "require_association 'order'" at the bottom of item_collection.rb
> and
> "require_association 'replenishment_order'" at the bottom of order.rb
>
> On K, 2008-10-29 at 03:22 -0700, zubin wrote:
>
> > Hi, on Rails 2.2RC1 I've found a what appears to be a bug in
> > ActiveRecord STI classes:
>
> > class ItemCollection < ActiveRecord::Base
> > class Order < ItemCollection
> > class ReplenishmentOrder < Order
>
> > The problem is that instances of ReplenishmentOrder are initially not
> > found via Order.find(:id), as shown below.
> > After searching the subclass directly (second query), the SQL of
> > searching the parent class changes (see third query in log below).
>
> > Console:
>
> > >> Order.find(510)
> > ActiveRecord::RecordNotFound: Couldn't find Order with ID=510
> >         from /Users/zubin/ww/g2/vendor/rails/activerecord/lib/
> > active_record/base.rb:1528:in `find_one'
> >         from /Users/zubin/ww/g2/vendor/rails/activerecord/lib/
> > active_record/base.rb:1511:in `find_from_ids'
> >         from /Users/zubin/ww/g2/vendor/rails/activerecord/lib/
> > active_record/base.rb:590:in `find'
> >         from (irb):1
> > >> ReplenishmentOrder.find(510)
> > => #<ReplenishmentOrder id: 510, parent_id: nil, user_id: 28,
> > payment_method_id: nil, billing_address_id: 1, shipping_address_id: 1,
> > type: "ReplenishmentOrder", status: "editing", ref: nil,
> > despatched_at: nil, created_at: "2008-10-28 04:42:54", updated_at:
> > "2008-10-29 05:04:30", total: #<BigDecimal:5d92998,'0.0',4(8)>,
> > freight_total: #<BigDecimal:5d9295c,'0.0',4(8)>, redeemed_total:
> > #<BigDecimal:5d92920,'0.0',4(8)>>
> > >> Order.find(510)
> > => #<ReplenishmentOrder id: 510, parent_id: nil, user_id: 28,
> > payment_method_id: nil, billing_address_id: 1, shipping_address_id: 1,
> > type: "ReplenishmentOrder", status: "editing", ref: nil,
> > despatched_at: nil, created_at: "2008-10-28 04:42:54", updated_at:
> > "2008-10-29 05:04:30", total: #<BigDecimal:5d8ff54,'0.0',4(8)>,
> > freight_total: #<BigDecimal:5d8ff18,'0.0',4(8)>, redeemed_total:
> > #<BigDecimal:5d8fedc,'0.0',4(8)>>
>
> > Log:
>
> > $ tail log/development.log
> >   Order Columns (185.4ms)   SHOW FIELDS FROM `item_collections`
> >   Order Load (97.8ms)   SELECT * FROM `item_collections` WHERE
> > (`item_collections`.`id` = 510) AND ( (`item_collections`.`type` =
> > 'Order' ) )
> >   ReplenishmentOrder Columns (2.5ms)   SHOW FIELDS FROM
> > `item_collections`
> >   ReplenishmentOrder Load (0.4ms)   SELECT * FROM `item_collections`
> > WHERE (`item_collections`.`id` = 510) AND ( (`item_collections`.`type`
> > = 'ReplenishmentOrder' ) )
> >   Order Load (0.5ms)   SELECT * FROM `item_collections` WHERE
> > (`item_collections`.`id` = 510) AND ( (`item_collections`.`type` =
> > 'Order' OR `item_collections`.`type` = 'ReplenishmentOrder' ) )
>
> > -Zubin

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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 this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to