2012-01-07 83 views
1

我一直在試圖使這個查詢工作了幾個小時,但我不能。所以我希望有人能幫忙。查詢找不到列

這裏的錯誤: 的Mysql ::錯誤:未知列在「NETWORK_ID 'where子句':SELECT networks * FROM networks WHERE(NETWORK_ID = 1,2)

這裏是我的模型:

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)  

任何幫助是應用程序reciated。提前致謝!

回答

1

的錯誤是在這一行:

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

您明確告訴ActiveRecord的是要限制這顯然是不存在的列network_id。可能你的意思是id專欄。正確的路線可能如下:

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

或等價

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

注意,在我的例子中,我使用的Rails 3的加載ActiveModel新/ AREL語法您使用的是過時(但仍支持)Rails的語法2.您應該切換到新的語法,因爲它允許您鏈接更強大,更可讀的查詢。請參閱documentation關於如何使用新的AREL語法。

+0

非常感謝!我使用.find是錯的嗎?例如,如果我做了Network.find(:id => @user_approved).all會有效嗎?謝謝! – yellowreign 2012-01-07 22:29:40

+0

這也可以。但正如我上面所說,ActiveRecord 2的'.find'方法已被棄用。您應該使用新的AREL語法。 – 2012-01-07 22:32:48