Rails:命令找到具有has_and_belongs_to_many关系的对象

时间:2012-07-15 18:18:23

标签: mysql ruby-on-rails

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找不到“用户”。知道如何获取这些数据吗?

1 个答案:

答案 0 :(得分:1)

当您致电users.count DESC时,rails会尝试查找列users.count。您需要移除count并改为参考user.id

尝试更改:order => "users.count DESC"的{​​{1}}。

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

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

:order => "COUNT(users.id) DESC"