Rails4 - 不明确的列名,没有这样的列错误

时间:2014-11-25 14:06:56

标签: mysql ruby-on-rails postgresql ruby-on-rails-4

我的控制器中有以下内容列出了用户。

@users = User.paginate(:page => params[:page])

我尝试使用以下

更改订单
@users = User.paginate(:page => params[:page]).order('created_at DESC')

我收到以下错误

ActiveRecord::StatementInvalid in UsersController#index
SQLite3::SQLException: ambiguous column name: created_at: SELECT DISTINCT "users"."id" FROM "users" LEFT OUTER JOIN "user_languages" ON "user_languages"."user_id" = "users"."id" WHERE (user_languages.level_id = 1) ORDER BY created_at DESC LIMIT 30 OFFSET 0

然后我改变了如下行

@users = User.paginate(:page => params[:page]).order('user.created_at DESC')

我收到以下错误。

ActiveRecord::StatementInvalid in UsersController#index
SQLite3::SQLException: no such column: user.created_at: SELECT DISTINCT "users"."id" FROM "users" LEFT OUTER JOIN "user_languages" ON "user_languages"."user_id" = "users"."id" WHERE (user_languages.level_id = 1) ORDER BY user.created_at DESC LIMIT 30 OFFSET 0

请帮助解决此错误。

1 个答案:

答案 0 :(得分:4)

您可能在User上有一些加入user_languages的默认作用域,并且这两个表中都有created_at列。因此,您应该指出要订购哪个表created_at

@user = User.paginate(page: params[:page]).order('users.created_at DESC')