2011-02-06 3 views
4

などのようにfindメソッドを使用しているとき、私はこのエラーあいまいな列/ Railsは見つける方法

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

を取得しています:そう協会を通じて、:

モデルself.prompts.find(:all, :select => 'id')が呼び出されているにhas_manyを使用してMySQLは、使用されている3つのテーブルすべてに 'id'カラムがあるので、複数の 'id'カラムが存在すると不平を言います。

私はこれを見て、SQLの終わりに何が起こっているのかを理解していますが、ActiveRecord findメソッドで解決する方法がわかりません。自分の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' 

答えて

7

あなたが選択したいIDについてより明確にする必要があります。たとえば:「あいまいな」エラーを処分したが、今では `不明列文句だ

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

大丈夫、うーんは、2つの入れ子にhas_manyがあるおそらくので、どこclause''」に「decisions.actor_id」それが活動している団体を通じて。 – John

+0

私はあなたのセットアップの残りの部分が正しくないと思っています。 has_manyと外部キーと主キーのドキュメントを読んでください。あなたの設定に役立つはずです。あなたのテーブル名とカラム名がRailsの慣習に従わなければ、物事は困難になるが、不可能ではない。 –

+0

ここに掲載されているアドバイスを参考にしてみてください:[http://railsforum.com/viewtopic.php?id=10890](http://railsforum.com/viewtopic.php?id=10890)うまくいくようです今。どうもありがとう。 – John

関連する問題