This project is archived and is in readonly mode.
Full class name STI not included in eager loading
Reported by Christian Weyer | June 21st, 2008 @ 02:15 PM
When eager loading a polymorphic association, it does not care about the full class name (with module) in the associated type column (attached_type in the following example).
Example:
class Shared::Address
belongs_to :attached, :polymorphic => true
end
class Company::Base
has_one :address, :as => :attached, :class_name => 'Shared::Address'
end
When saving the association the attached_type column in the addresses table says correctly Company::Base.
Eager loading the company's address however produces this query: Shared::Address::Load (0.000539) SELECT "addresses".* FROM "addresses" WHERE ("addresses"."attached_id" IN (1) and "addresses"."attached_type" = 'Base')
Attached_type is incorrectly set as "Base" where it should be "Company::Base". Therefore this results in company.address being nil.
Note that only eager load is affected. Loading the association on demand works.
Comments and changes to this ticket
-
Joachim Garth June 26th, 2008 @ 06:18 PM
- Tag set to “2.1, activerecord, bug, eager_loading, patch, tested”
Confirmed; "Wrote a patch" for it... could anybody confirm this?
-
Pratik June 27th, 2008 @ 04:11 PM
- State changed from “new” to “incomplete”
- Tag changed from “2.1, activerecord, bug, eager_loading, patch, tested” to “2.1, activerecord, bug, eager_loading, patch”
Could you please generate the patch using git-format-patch ? Also, the patch is missing tests.
Thanks.
-
Joachim Garth June 27th, 2008 @ 07:08 PM
Done and done. :) It's a git format-patch now. Tests are included now, as well.
-
Pratik June 27th, 2008 @ 07:27 PM
- State changed from “incomplete” to “open”
-
Christian Weyer June 28th, 2008 @ 04:43 PM
This bug seems to be bigger than I first thought. When checking http://rails.lighthouseapp.com/a... I could not find any code changes for eager loading at all?
I still encounter this bug after applying Josch's patch in other scenarios, not related to polymorphic associations. How comes nobody noticed that? Am I the only one using namespaces?
-
Christian Weyer June 28th, 2008 @ 09:14 PM
- Title changed from “Polymorphic eager load does not care about full class name in <assoc_name>_type column” to “Full class name STI not included in eager loading”
-
Christian Weyer June 28th, 2008 @ 11:00 PM
Fixed both of the bugs, attached a test. This test does not include tests since Josch's test are already there and working
-
Christian Weyer June 28th, 2008 @ 11:01 PM
Should not work late a night :)
I attached a patch, not a test. And this patch does not include tests since Josch's tests are working
-
Pratik July 17th, 2008 @ 01:47 PM
- Assigned user set to “Pratik”
-
Repository July 18th, 2008 @ 03:47 AM
- State changed from “open” to “Resolved”
(from [a1fcbd971d681e44de5ea33e6a8470ff8b8144c0]) Make sure association preloading works with full STI class name [#465 state:Resolved]
Signed-off-by: Pratik Naik
-
Repository August 25th, 2008 @ 09:28 AM
(from [c3aad223321d1897c9e2269b32c3c2da7af814d1]) Make sure association preloading works with full STI class name [#465 state:Resolved]
Signed-off-by: Pratik Naik pratiknaik@gmail.com http://github.com/rails/rails/co...
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>
People watching this ticket
Attachments
Tags
Referenced by
- 671 Full STI class name in associations this is a duplicate of #465 which is already resolved
- 465 Full class name STI not included in eager loading (from [c3aad223321d1897c9e2269b32c3c2da7af814d1]) Make su...
- 2756 [patch] The polymorphic type field should be subclass name instead of base class name when using polymorphic association with single table inheritance For example, we should use @owner.class.name.to_s rather ...