我的Item
型号有name
和user_id
。我想按用户搜索所有项目和组,以便我可以向每个用户显示他们的项目:
...
在控制台中,我试试这个:(From the documentation)
Item.search({group_by: :user_id, limit: 50}).all
我明白了:
Sphinx Query (0.4ms)
Sphinx Caught Sphinx exception: can't dup Symbol (0 tries left)
TypeError: can't dup Symbol
from /Users/pinouchon/.rvm/gems/ruby-1.9.3-p392@gemset/gems/riddle-1.5.6/lib/riddle/client/message.rb:18:in `dup'
与此相同的错误:
Item.search({group_by: :user_id, order_group_by: '@count desc'}).each_with_group
在没有任何问题的情况下通过返回结果搜索没有组。
怎么了?
答案 0 :(得分:1)
快速回答:尝试将属性名称作为字符串发送,而不是符号。
答案越长:该查询不会为您提供所需的结果 - 它将为每个用户返回一个项目。您最好通过user_id进行排序:
items = Item.search(
:order => 'user_id ASC, @weight DESC',
:sort_mode => :extended,
:limit => 50
)
然后,您可以使用Ruby / Rails获取用户分组每个项目:
items.group_by(&:user)