Dynamically constructing conditions in multiple self join

Hi,

I am using a join that looks like this:

Person.find :all,   :select => 'children_people_3.*',   :joins => { :children => { :children => :children } },   :conditions => {     :people => { :name => 'tom' },     :children_people => { :name => 'dick' },     :children_people_2 => { :name => 'harry' },     :children_people_3 => { :name => 'charles' }   }

which I don not like because I am hard-coding assumptions about the table aliases used for the joins into the conditions.

Can someone tell me how to write the conditions in a more flexible way (can they be specified using the hash syntax?), or possibly tell me how I could try use the Arel being used to construct the query by the Rails core to construct the table aliases that I am hard-coding above.

Rails 3.0.0.beta.

Thanks.