2012-01-07 11 views
1

私は過去数時間このクエリを動作させようとしていましたが、できません。だから私は誰かが助けることを願っていますクエリがカラムを見つけることができません

ここでエラーがあります: のMysql ::エラー: 'where句' 内の不明な列 'network_idで':。networksをSELECT *(NETWORK_ID = 1,2)networks

FROMここでは私のモデルは以下のとおりです。

class Network < ActiveRecord::Base 
    belongs_to :customer 
    has_many :user_network_relations 

class Customer < ActiveRecord::Base 
    has_one :network, :dependent=>:destroy 
    accepts_nested_attributes_for :network 

class UserNetworkRelation < ActiveRecord::Base 
    belongs_to :network 
    accepts_nested_attributes_for :network 

コントローラ

@user = User.find(params[:id]) 
@user_approved = UserNetworkRelation.find(:all,:conditions => ['user_id = ? and status =? ', @user, "approved"]) 
@networks = Network.find(:all,:conditions => ['network_id = ?',@user_approved]) 
@user_networks = Customer.find(@networks)  

すべてのヘルプはアプリです再発行された。前もって感謝します!

答えて

1

エラーは、この行である:

@networks = Network.find(:all,:conditions => ['network_id = ?',@user_approved]) 

あなたは明示的には明らかに存在しない列network_idを制限したいというのActiveRecordを語っています。おそらく、id列を意味していました。読み取ることができ、正しいラインは次のとおりです。

@networks = Network.where(:id => @user_approved).all 

または私の例では、私はあなたが非推奨(まだサポートされ使用のRails 3の新しいActiveModel/AREL構文を使用することを同等に

@networks = Network.where('id = ?', @user_approved).all 

注意)Railsの構文2.新しい構文に切り替える必要があります。これは、より強力でより読みやすいクエリを連鎖できるようにするためです。新しいAREL構文の使用方法については、documentationを参照してください。

+0

大変ありがとうございます。 .findを使うのは間違っていたのですか?たとえば、Network.find(:id => @user_approved)を実行した場合、.allは動作しますか?ありがとうございました! – yellowreign

+0

それもうまくいきました。しかし、上で述べたように、ActiveRecord 2の '.find'メソッドは非難されています。代わりに、新しいAREL構文を使用する必要があります。 –

関連する問題