繁体   English   中英

Rails:订购具有has_and_belongs_to_many关系的对象

[英]Rails: Order found objects with a has_and_belongs_to_many relationship

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

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

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

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

编辑 -尝试新的查询方式(路轨3)。 应如下所示:

Book.where('title LIKE ?', "%#{params[:autocomplete]}%").includes(:users).order(COUNT(users.id) DESC").limit(5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM