代码之家  ›  专栏  ›  技术社区  ›  Trip

关于计数的简单IRB问题

  •  0
  • Trip  · 技术社区  · 14 年前

    我有一门叫做“交易”的课。

    交易有投票权。

    我想知道交易中有多少投票分数大于2。

    我猜想:

    投票结果\交易中的2分 计数 结束

    不太管用:d

    编辑:

    我尝试了每个人的想法。但请注意:

    交易投票得分

    不起作用,因为投票分数不是交易的一个属性,而是交易的一个属性。所以如果我这样做:

    交易。查找(1)投票得分

    将返回a。

    投票分数在这里的哈姆语中举例说明:

    .deal_summary{:id => "deal_#{deal_view.id}"}
    .score
      = deal_view.vote_scores
    

    在这里的模型中:

    def vote_scores
      self.votes.inject(0){|sum, vote| sum + vote.value}
    end
    
    3 回复  |  直到 14 年前
        1
  •  2
  •   Samuel Chandra    14 年前

    如果您只想知道有多少个,那么更有效的代码是:

    Deal.count(:conditions => ["vote_scores > ?", 2])
    

    这将更快,因为计数是在SQL中完成的,而不是在Ruby中。

    编辑

    好的,我们可以试试这个:

    Deal.find(:all).select {|e| e.vote_scores > 2}.count
    

    这将返回具有投票权的交易对象总数\u分数>2

    希望这就是你想要做的。

        2
  •  0
  •   Tim Hoolihan    14 年前

    deal.find(:all,:conditions=>[“投票分数”>?“,2))长度

        3
  •  0
  •   fl00r    14 年前
    deal = Deal.first #or whatever... Deal.find(10)
    deal.votes.count :conditions => ['value > ?', 2]
    

    为了所有的选票

    Vote.count(:conditions => ['value > ?', 2'])