更改rails ActiveRecord最后的订购

时间:2014-09-11 14:54:08

标签: ruby-on-rails activerecord

我的模型看起来像这样:

class EmployeeTrainingRecord < ActiveRecord::Base

end

当我这样做时:

EmployeeTrainingRecord.all

我明白了:

SELECT "employee_training_records".* FROM "employee_training_records"

到目前为止,这都是非常标准的东西......现在是有趣的部分......

当我这样做时:

EmployeeTrainingRecord.last

我明白了:

SELECT "employee_training_records".* FROM "employee_training_records" ORDER BY "employee_training_records"."" DESC LIMIT 1

"employee_training_records".""上的哪些错误。

不幸的是,我没有创建此表,也没有可用的迁移。

在我写这个问题时,我发现用于按最后和第一个排序的列可能是主键。在对ActiveRecord指南进行一些调查之后,我发现你可以在模型中设置主键,并且这样做修复了我最初询问的问题。那就是说,我有一个新问题:

有没有办法更改上一个和第一个排序的列(除了当然更改primary_key)?

self.order_column

之类的东西

我知道我可以执行order()。limit(),但看起来可能有用的是按时间戳为最后和第一个目的排序(我知道default_scope被广泛接受为一种方式添加默认排序,但是,default_scope有一些讨厌的副作用,我不想总是应用排序。)

1 个答案:

答案 0 :(得分:0)

将此添加到您的模型中:

default_scope { order('created_at DESC') }

您可以使用您想要的任何属性而不是created_at。