我的模型看起来像这样:
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有一些讨厌的副作用,我不想总是应用排序。)
答案 0 :(得分:0)
将此添加到您的模型中:
default_scope { order('created_at DESC') }
您可以使用您想要的任何属性而不是created_at。