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".