ActiveRecord对象的奇怪排序

问题描述 投票:0回答:1

我试图在视图中通过:id获取记录。我有:id在控制器中订购的记录,就像这样

@bands = Band.where(available: true).order(:id)

当应用程序启动时,一切看起来都很正常,但随着记录的更新,排序行为变得很糟糕。大多数情况下,最近编辑过的记录移到最后,但并非总是如此。这不应该发生,因为记录是由:id订购的,不应该改变

对于上下文,在视图中是类似的

<% @bands.each do |b| %>
<%= b.name %>
<% end %>

另请注意,在rails控制台中,这两个都返回正确排序的结果(这使得这个问题更加奇怪):

ActiveRecord::Base.connection.execute("SELECT * FROM bands WHERE available = 'true' ORDER BY id")

Band.where(available: true).order(:id)

另请注意,当我加载index视图并观察rails服务器时,我可以看到结果的顺序不正确。

我也可以看到已执行的sql查询,它忽略了order部分,它根本没有提到查询中的顺序

ruby-on-rails activerecord ruby-on-rails-5
1个回答
1
投票

实际上,我认为这是不可能的。但是,试试这个:

@bands = Band.where(available: true).order(:id).to_a
© www.soinside.com 2019 - 2024. All rights reserved.