为什么ActiveRecord查询返回不明确的列引用?

时间:2012-06-01 02:19:24

标签: ruby-on-rails

在Rails应用程序中,我正在设置嵌套路由

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. 还有别的什么......?
  4. 我很感激任何建议或想法。

2 个答案:

答案 0 :(得分:2)

尝试:

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

答案 1 :(得分:0)

好吧,我最终走到了最底层。以下查询不正确

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

帖子属于用户,帖子有一个国家/地区。在USer和Country之间没有直接关系的情况下,我将查询修改为

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

(并仔细检查了我所有的模型关系都已正确配置)。

作品!

错误消息对于跟踪此消息并不是很有帮助!