Ambiguous columns from related tables

Hi all,

I've got an issue where i have a search page that passes a field which is then used as the criteria of the search. Problem is, I've set an AR has_many relationship in the model that joins one table to another - both tables have the same column name I'm searching on, so naturally I get an ambiguous error in sql - it doesnt know which column to apply the search to.

One solution would be to append the desired table name to the field being passed on in search, like my_database.foo where foo was the ambiguous field. But this doesn't seem very Rails-ish to my newbie eyes. Is there a better, AR-based way to handle this issue?

Best,

Peter D Bethke

Hi all,

I've got an issue where i have a search page that passes a field which is then used as the criteria of the search. Problem is, I've set an AR has_many relationship in the model that joins one table to another - both tables have the same column name I'm searching on, so naturally I get an ambiguous error in sql - it doesnt know which column to apply the search to.

One solution would be to append the desired table name to the field being passed on in search, like my_database.foo where foo was the ambiguous field. But this doesn't seem very Rails-ish to my newbie eyes. Is there a better, AR-based way to handle this issue?

How are you specifying your conditions? if you use the hash form of conditions :some_table => (:name => 'bob'), then rails is in general better at figuring out table aliases and so on. Arel is also pretty smart about this, although I don't recall how much of this is exposed by active record.

Fred

If you post the code of your search, then maybe we can offer some pointers. But essentially, you need to dis-ambiguate (nice made-up word...) by putting the table name in front of the column name, or by aliasing one of the fields with "AS".