2

在 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 回答 2

2

尝试:

@active_users = @users.where('users.posts_count > ?', 0).ranked_scope
于 2012-06-01T02:33:46.707 回答
0

好的,我最终明白了这一点。以下查询不正确

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

Post 属于 User,Post 通过 State 有一个 Country。如果 USer 和 Country 之间没有一个方向的直接关系,我将查询修改为

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

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

作品!

但是,错误消息对于跟踪这一点并没有多大帮助!

于 2012-06-02T06:33:46.113 回答