Ambiguous column in MySQL/Rails find method

2019-05-07 09:55发布

问题:

I'm getting this error

Mysql::Error: Column 'id' in field list is ambiguous

when using a find method like such: self.prompts.find(:all, :select => 'id')

The models are being called using a has_many :through association, so MySQL complains that there are multiple 'id' columns, since all 3 tables being used have an 'id' column.

I looked this up and understand what is going wrong on the SQL end, but don't know how to resolve it in the ActiveRecord find method, and I'm not confident in my SQL abilities to try rolling my own SQL query. Is there a way to massage the find method into something that'll play well?

edit

Here is the relevant Actor model code:

class Actor < ActiveRecord::Base
  has_many :acts, :dependent => :destroy
  has_many :decisions, :through => :acts, :order => 'created_at'
  has_many :prompts, :through => :decisions, :order => 'id'

回答1:

You need to be more explicit about which id you want to select. For example:

self.prompts.find(:all, :select => 'prompts.id') #prompts is the table name