0
Class User

has_many_belongs_to_many :books

end

Class Book

has_many_belongs_to_many :users

end

我正在尝试创建书籍列表并按他们拥有的用户数量对它们进行排序:

Book.find(:all,:conditions => ['title LIKE ?', "%#{params[:autocomplete]}%"],
:limit => 5, :include => :users, :order => "users.count DESC")

不幸的是,这会引发一个错误,告诉我没有用户列:

<pre>Mysql::Error: Unknown column 'users.count' in 'order clause': SELECT  `books`.*
FROM `books`  WHERE (title LIKE '%pop%') ORDER BY users DESC LIMIT 5</pre>

如果我删除“计数”,我仍然会收到一条错误消息,指出 Mysql 找不到“用户”。知道如何获取这些数据吗?

4

1 回答 1

1

当您调用时users.count DESC,rails 会尝试查找该列users.count。您需要删除count并参考user.id

尝试更改:order => "users.count DESC"for :order => "COUNT(users.id) DESC"

我现在无法测试它,但我相信它应该可以解决问题......

编辑- 尝试新的查询方式(Rails 3)。应该是这样的:

Book.where('title LIKE ?', "%#{params[:autocomplete]}%").includes(:users).order(COUNT(users.id) DESC").limit(5)
于 2012-07-15T19:13:38.430 回答