There’s a very minor bug in the associations when generating conditions. It uses @reflection.active_record.sanitize_sql which results in Hash type conditions getting the table name of the model that has the association instead of on the association table.
For example, something like:
class Person < ActiveRecord::Base has_one :address, :conditions => { :disabled => false } has_many :shipments, :through => :address end
if you do:
p = Person.find(1) p.shipments
the sql it generates to fetch the shipments will include in it’s conditions:
people
.disabled = ‘0’
when that should be
addresses
.disabled = ‘0’
All we need to do to fix that is have each call to sanitize_sql be done with the class the conditions are being called on as the receiver.
@reflection.through_reflection.klass.sanitize_sql(@reflection.throught_reflection.options [:conditions])
And it’s solved:
Here’s the patch link. I’d like to get this in so I don’t have to write a monkey patch to do it since it’s considerably more code than the 3 line fix to core. http://dev.rubyonrails.org/ticket/5971/
Let me know if there’s anything I can do to help this through.
-Martin Emde