我正在使用Rails中的thumbs_up gem创建一个投票系统。在我的一个控制器中,我有一个名为Superlative
的模型acts_as_voteable
,我试图用至少一次投票来过滤掉这些对象。
基于documentation and online resources,这应该有效:
def most_votes
@most_votes = Superlative.tally(
{ :at_least => 1,
:limit => 10,
:order => 'vote_count desc'
})
end
但我得到了Superlative模型中的所有记录,即使是0票。此外,订购似乎也不起作用。无论我放desc
还是asc
,排序总是desc
。
我到处搜索,但似乎没有人遇到同样的问题。
以下是一些相关的应用详情:
Using thumbs_up (0.6.5)
Using rails (3.2.13)
ruby 1.9.3p429
更新:其他信息 我尝试在控制台中运行上面的控制器代码(全部用于该操作),并且再次返回所有记录,包括那些有0票的记录。
另外,请查看以下代码:
- provide(:title, "Best Superlatives")
#superlatives
%h1.title Superlatives (Most Votes)
%table.table.table-hover
%thead
%tr
%th Name
%th Most Likely ...
%th Votes
%th Vote!
%tbody
= render @most_votes
%br/
答案 0 :(得分:0)
如果这不起作用,可能是在您在视图上绘制变量@most_votes之前,在某些时候覆盖该变量的内容。
尝试通过运行
进入rails控制台bundle exec script/rails console
进入控制台后,尝试运行:
@most_votes = Superlative.tally(
{ :at_least => 1,
:limit => 10,
:order => 'vote_count desc'
})
现在检查@most_votes的内容,你应该看到投票至少有1票,顺序正确,我很确定这些查询的宝石工作正常,因为我从来没有遇到任何问题。它被许多开发人员用于生产环境。
如果执行此操作后确认gem工作正常,请尝试使用完整的控制器代码和完整的视图代码更新您的问题,以便我们帮助调试问题。