1

我似乎无法从数据库中提取有序数据。我正在尝试根据用户个人资料的浏览次数在我的主页上列出用户。

我的users架构如下所示:

# == Schema Information
#
#
# Table name: users
#
#  id              :integer          not null, primary key
#  email           :string(255)
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#  username        :string(255)
#  password_digest :string(255)
#  views           :integer
#

我的控制器:

class PagesController < ApplicationController
  def home
    @users = User.order("'views' DESC")
  end
end

问题是.order它什么也没做。@users仍然是按顺序排列的id,好像我已经完成了一样User.all。我尝试User.order("'views' DESC")在 Rails 控制台中运行,但得到的结果与User.all.

我检查了 development.log,查询似乎已正确执行:

[1m[35mUser Load (0.2ms)[0m  SELECT "users".* FROM "users" ORDER BY 'views' DESC
Rendered pages/home.html.erb within layouts/application (1.1ms)
Rendered layouts/_header.html.erb (0.5ms)
Rendered layouts/_footer.html.erb (0.0ms)

在客户端进行排序工作,但是我想对用户进行分页,所以这不是一个选项。任何建议将不胜感激!

4

2 回答 2

1
@users = User.order("views DESC")

检查http://guides.rubyonrails.org/active_record_querying.html#ordering

对于分页,您可以通过此 gem 获得一些帮助: https ://github.com/mislav/will_paginate

于 2012-09-05T21:01:02.840 回答
0

周围的''视图是导致您的查询失败的原因。不带引号试试:

User.order("views DESC")

于 2012-09-05T21:03:06.423 回答