ActiveRecord对象的奇怪排序

时间:2019-03-01 19:12:50

标签: ruby-on-rails activerecord ruby-on-rails-5

我正在尝试按视图中的: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部分,只是在查询中没有提及顺序

1 个答案:

答案 0 :(得分:1)

实际上,我认为不可能。 但是,尝试一下:

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