我试图在视图中通过: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
部分,它根本没有提到查询中的顺序
实际上,我认为这是不可能的。但是,试试这个:
@bands = Band.where(available: true).order(:id).to_a