2012-06-01 41 views
2

在Rails應用程序我設置了嵌套航線爲什麼ActiveRecord查詢返回模糊的列引用?

resource Country do 
    resource State 
    resource City 
    resource User 
    resource Post 
end 

我現在想顯示已在../country/1/users

發佈了國內在用戶控制器的用戶,我有:

def index 
    @user = User.includes(:posts, :city, :state, :country) 
    @user = @users.where("states.country_id = ?", params[:country_id]) if params[:country_id] 
    @active_users = @users.where('posts_count > ?', 0).ranked_scope 
end 

我,漸漸:

PG::Error: ERROR: column reference "posts_count" is ambiguous 
LINE 1: ...untry_id" WHERE (states.country_id = '1') AND (posts_co... 

我不知道這是因爲:

  1. 上有用戶,市,省,國家機型posts_count列和查詢不知道用哪個上。如果是這樣,指定表的正確語法是什麼?
  2. 我把兩個where子句錯誤地串在一起。
  3. 別的東西....?

我很感激任何建議或想法。

回答

0

OK,我最終得到了這條底線。以下查詢不正確

@users = @users.where("states.country_id = ?", params[:country_id]) if params[:country_id] 

帖子屬於用戶,帖子有一個國家通過國家。如果沒有用戶和鄉村之間的一個方向有直接的關係,我修改了查詢

@users = @users.where(id: Country.find(params[:country_id]).users.uniq if params[:country_id] 

(和雙重檢查我所有的模型關係進行正確配置)。

作品!

雖然錯誤信息並不是非常有幫助,但是,

2

嘗試:

@active_users = @users.where('users.posts_count > ?', 0).ranked_scope 
+1

謝謝kafuchau。這給'PG ::錯誤:錯誤:模式「用戶」不存在'。我很感激任何其他想法。 –