This project is archived and is in readonly mode.

#109 ✓resolved
John Devine

[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

    Frederick Cheung May 6th, 2008 @ 10:26 AM

    +1. tests all pass, looks sane (also see discussion on trac)

  • Repository

    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]

    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>

Referenced by

Pages