Rails:记录不是由heroku中的id排序的

时间:2015-03-25 19:50:44

标签: ruby-on-rails activerecord heroku

我有一个问题我在我的本地环境中开发了我的应用程序,一切都按预期工作,但在我部署到heroku后,某些东西无法正常工作。

我有2个型号PurchasingGroup和GroupGoal

采购组有很多小组目标,当我为采购组创建小组目标时,我可以在控制台中检查这样的

PurchasingGroup.last.group_goals

结果就是这个

[#<GroupGoal id: 130, created_at: "2015-03-25 17:09:08", updated_at: "2015-03-25 17:10:37", other attributes ommitted>, 
#<GroupGoal id: 131, created_at: "2015-03-25 17:09:08", updated_at: "2015-03-25 17:18:11", other attributtes ommitted]>

这是正确的,它在heroku和我的本地也是如此,当组目标更新时,记录的顺序在heroku中更改(仅在heroku中),因此结果就像这样

[#<GroupGoal id: 131, created_at: "2015-03-25 17:09:08", updated_at: "2015-03-25 17:10:37", other attributes ommitted>, 
#<GroupGoal id: 130, created_at: "2015-03-25 17:09:08", updated_at: "2015-03-25 17:18:11", other attributtes ommitted]>

所以,如果您现在看到订单已更改,这会破坏我的应用程序的许多功能,所以我必须像这样指定EVERYTIME

PurchasingGroup.last.group_goals.order(:id)

我必须通过以下方式指定order:id才能使其在heroku中运行。知道为什么吗?

2 个答案:

答案 0 :(得分:2)

如果您依赖于有序结果,则始终使用.order指定订单

答案 1 :(得分:2)

假设您正在使用postgres w / Heroku,postgres按最近更新的排序。您必须覆盖模型中的默认订单,如has_many: group_goals, :order => "id DESC"或您拥有的