New version of Activerecord gives different result

I am sorry, but I am struggling. I installed new versions of my gems and
my programs don’t run anymore. As suggested I tried to roll back to
older versions, but that is becoming a bigger mess. The flight forward
has at least recovered 90% of my application.

Both statement worked perfect with the old version of activerecord.
Now the first one works okay, the last one does not get the join built
up in the sql statement.

Again thanks for all the help.
Ernst

This statement works:

owner = Owner.find(:all, :include => {:accounts => {:orders =>{}}},
:conditions => [‘Orders.flag = 0’],
:order => [‘owners.name, accounts.name, orders.id’])

This statement does not work:
owner = Owner.find(:all,
:include => {:accounts => {:trades =>{}}},
:order => [‘owners.name, accounts.name, trades.underlying, trades.month,
trades.strategy’] )


The error I get is a that accounts.name is not a valid column. Which is
caused by the fact that the join is not added into the SQL statement.

Here is my Schema:
class Owner < ActiveRecord::Base
has_many :accounts
end
class Account < ActiveRecord::Base
belongs_to :owner
has_many :trades
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :account
end
class Trade < ActiveRecord::Base
belongs_to :account
has_many :legs
end
class Leg < ActiveRecord::Base
belongs_to :trade
end
class Earning < ActiveRecord::Base
end

I found a work around dirty but for now it works.

The difference between the statements is the use of the conditions part.

I added a fake condition

:conditions => [‘trades.id = trades.id’]

and now the joins is built as I want.

Definitely a difference between activerecord versions.

Would still appreciate a comment from a experience programmer.

On Jun 10, 8:24 pm, Ernst T. [email protected]
wrote:

Ernst

Eager loading (:include) changed substantially in 2.1 but should be
able to fallback to the previous code in cases like this.
You’ve confused the fallback code by giving an array to :order where
you should only be giving a string (the first example works because
the conditions options is able to trigger the fallback.

Fred