我的控制器上有类似
的内容@account = @user.accounts.first
我只想显示accounts数组中的第一项。但每当我添加新帐户时,@ account现在指的是帐户数组中的最后一项。
在本地,使用SQLite3,它可以正常工作,@ account始终引用accounts数组中的第一项,但在带有postgresql的heroku上,就是这种情况发生的时候。
为什么会这样?
答案 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
最后一次。