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"

今はテストできませんが、問題は解決するはずです...

編集-クエリの新しい方法を試してください(Rails3)。次のようなものである必要があります。

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