【问题标题】:Rails4 - ambiguous column name and no such column errorRails4 - 列名不明确,没有这样的列错误
【发布时间】:2014-11-25 14:06:55
【问题描述】:

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

@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

请帮助解决此错误。

【问题讨论】:

  • 你有错字:users.created_at

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


【解决方案1】:

您可能在User 上有一些默认范围,它连接user_languages,并且在这两个表中都有created_at 列。所以你应该指出你要订购哪个表的created_at

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2014-09-23
    • 2011-11-11
    • 2017-02-09
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多