This project is archived and is in readonly mode.
[patch] Ensure necessary included tables are joined in construct_finder_sql_for_association_limiting
Reported by John Devine | May 4th, 2008 @ 07:25 PM
Currently selecting limited ids for eager loading associations is broken when there is a condition or an order-by based on a table that is not directly joined to the main active record table.
so if I have:
class Person
has_many :items
end
class Item
belongs_to :person
has_one :another_item
end
class AnotherItem
belongs_to :item
end
Person.find(:all,
:include=>{:items=>:another_item},
:order=>" another_items.name ASC ",
:limit=>4)
The find will fail because the join to table items will not be included.
The patch adds methods to the join_dependency to look up joins by aliased table name, and get an array of the joins required to reach that table.
Comments and changes to this ticket
-
Frederick Cheung May 6th, 2008 @ 10:26 AM
+1. tests all pass, looks sane (also see discussion on trac)
-
Repository May 6th, 2008 @ 11:01 AM
- State changed from new to resolved
(from [8ded457b1b31b157d6fe89b553749579e5ac4a27]) Added logic to associations.rb to make sure select_for_limited_ids
includes joins that are needed to reach tables listed in the :order
or :conditions options if they are not joined directly to the main
active_record table.
Signed-off-by: Michael Koziarski
[#109 state:resolved]
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
Referenced by
- 325 Add assert_query method to AR test_helper This is essential functionality for me to write a test s...