Postgres返回数组上的最后一项而不是第一项

时间:2013-12-20 13:05:51

标签: ruby postgresql heroku ruby-on-rails-4

我的控制器上有类似

的内容
@account = @user.accounts.first

我只想显示accounts数组中的第一项。但每当我添加新帐户时,@ account现在指的是帐户数组中的最后一项。

在本地,使用SQLite3,它可以正常工作,@ account始终引用accounts数组中的第一项,但在带有postgresql的heroku上,就是这种情况发生的时候。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

根据rails存储库中的this issue,您应该明确说明排序以确保其正常工作:

@account = @user.accounts.order(:created_at).first

答案 1 :(得分:0)

Postgres表没有隐含的顺序。如果您需要有保证的订单,则需要在查询中添加.order

@account = @user.accounts.order(id: :asc).first

会为您提供为该用户创建的第一个帐户

@account = @user.accounts.order(id: :desc).first

最后一次。