Неоднозначный столбец в MySQL / Rails метод поиска - PullRequest
4 голосов
/ 06 февраля 2011

Я получаю эту ошибку

Mysql :: Ошибка: идентификатор столбца в списке полей неоднозначен

при использовании метода поиска, подобного таковому: self.prompts.find(:all, :select => 'id')

Модели вызываются с использованием ассоциации has_many: through, поэтому MySQL жалуется, что имеется несколько столбцов 'id', поскольку все 3 используемые таблицы имеют столбец 'id'.

Я посмотрел это и понял, что происходит не так на стороне SQL, но не знаю, как решить эту проблему в методе поиска ActiveRecord, и я не уверен в своих способностях SQL попытаться откатить свой собственный запрос SQL , Есть ли способ втиснуть метод find в то, что будет хорошо играть?

редактировать

Вот соответствующий код модели актера:

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 Ответ

7 голосов
/ 06 февраля 2011

Вам нужно более четко указать, какой идентификатор вы хотите выбрать. Например:

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