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

On Mar 2, 2:34pm, Peter D Bethke [email protected] wrote:

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

On 2 March 2011 14:34, Peter D Bethke [email protected] wrote:

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.

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