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>
如果我删除“count”,我仍然会收到错误,说它Mysql找不到“用户”。知道如何获取这些数据吗?
答案 0 :(得分:1)
当您致电users.count DESC
时,rails会尝试查找列users.count
。您需要移除count
并改为参考user.id
。
尝试更改:order => "users.count DESC"
的{{1}}。
我现在无法测试,但我相信它应该可以解决问题...
编辑 - 尝试新的查询方式(Rails 3)。应该像下面这样:
:order => "COUNT(users.id) DESC"