0

在使用 last(10) 时的活动记录链接关联中,出现错误:

ActiveRecord::StatementInvalid 异常:Mysql2::Error: order 子句中的列 'id' 不明确

为了解决这个问题,我们通常指定表名,即posts.id,但我怎样才能把相同的逻辑放在最后呢?

在浏览了ActiveRecord Last的文档后,发现它使用了主键。我们还可以指定自定义属性吗?

任何帮助或想法表示赞赏。

谢谢

4

2 回答 2

1

该错误意味着您正在按名为的列进行排序,id并且您的fromandjoin子句中至少有两个表,其中包含具有该名称的列。您需要相应地对其进行限定,例如yourtable.id.

于 2013-06-07T16:00:06.410 回答
0

感谢 MrYoshji 的建议,最后一个为 activerecord 交替工作。

您可以通过限制特定列,但不能同时通过。

它只接受属性,如果它使用限制类型的整数,根据文档

order("#{primary_key} DESC").limit(*args).reverse

要指定“id”以外的属性,我们可以使用:

Model.last(:order => 'models.score')

按照我的要求,应该是

order("models.id desc").limit(12)

让我知道这是否可以做得更好。

谢谢

于 2013-06-11T08:26:56.830 回答