Ruby on rails 使用:order和:limit选项-rubyonrails

Ruby on rails 使用:order和:limit选项-rubyonrails,ruby-on-rails,Ruby On Rails,有没有办法在find方法中使用:limit和:order选项。我尝试按降序对活动进行排序,以便显示最新的活动。但是,当我尝试使用(:all,:limit=>5,:order=>'datedesc)时,我得到一个错误。我只需要限制为5条记录,当我忽略订单选项时,它可以工作,但不是我需要的 谢谢我想你在例子中漏掉了一句话 Model.find(:all,:limit=>5,:order=>'created_at desc') 确保表中存在日期列。您的日期列实际上被称为date?首先,我要改变这一点,

有没有办法在find方法中使用:limit和:order选项。我尝试按降序对活动进行排序,以便显示最新的活动。但是,当我尝试使用(:all,:limit=>5,:order=>'datedesc)时,我得到一个错误。我只需要限制为5条记录,当我忽略订单选项时,它可以工作,但不是我需要的


谢谢

我想你在例子中漏掉了一句话

Model.find(:all,:limit=>5,:order=>'created_at desc')


确保表中存在日期列。

您的日期列实际上被称为
date
?首先,我要改变这一点,date是大多数数据库中函数的名称,这可能是您看到的错误的原因。Rails使用在创建的
、在
更新的
等,因此遵循该命名方案将使您的代码对未来的维护人员更具可读性

您可以尝试在后面的刻度中引用列名:

:order => "`date` desc"

我已经试过了,但是我得到了这个错误,ORDER BY子句中以下位置的表达式,或者“ORDER BY”子句中以“DATE”开头的表达式无效。原因代码=“2”。SQLSTATE=42822它可能不被称为“日期”。请尝试“date”、“created_at”或“updated_at”。不幸的是,问题与日期列无关,如果我不使用:limit选项,它会按日期降序排序,效果会非常好。我知道列名不可取,但现在不能更改。当我使用limit选项而不使用order选项时,limit选项会起作用,反之亦然。您可以发布SQL尝试执行的日志吗?