0
我在我的项目模型上有owns_count counter_cache。当我做当我在counter_cache上执行命令时,它首先返回nil对象?
Items.order("owns_cache DESC")
,它返回我的对象之前,其他结果零。如果我做
"owns_cache ASC"
,这是正确的。
我该怎么做?
我在我的项目模型上有owns_count counter_cache。当我做当我在counter_cache上执行命令时,它首先返回nil对象?
Items.order("owns_cache DESC")
,它返回我的对象之前,其他结果零。如果我做
"owns_cache ASC"
,这是正确的。
我该怎么做?
如何获得排序的NULL取决于底层数据库。
对于PostgreSQL,你可以这样做:
Items.order("owns_cache DESC NULLS LAST")
对于MySQL和SQLite:
Items.order("COALESCE(owns_cache, 0) DESC")
我认为MySQL的以降序排序,但这样你可能不需要任何的底部排序的NULL那里特别。这种COALESCE方法也可以在PostgreSQL中工作,所以这将是一个便携式解决方案,应该可以为您提供一致的结果。
如果您希望在ASC排序的底部显示NULL,您可以用0
替换大于最大的owns_cache
数字的东西。
啊啊,谢谢。我正在使用Postgres。 – Julien