thumbs_up Rails gem的“at_least”和“order”方法没有做任何事情

时间:2013-09-13 22:43:19

标签: ruby-on-rails ruby-on-rails-3

我正在使用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/

1 个答案:

答案 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工作正常,请尝试使用完整的控制器代码和完整的视图代码更新您的问题,以便我们帮助调试问题。