Ruby on Rails-计数脚手架上的条目



在Rails pectaiton上的一个简单的红宝石中,我有一个脚手架,称为"提案",其中一列是一个称为" creationyear"的字符串。我试图计算每年在加载索引页面执行以下操作时创建了多少个建议(在" proposals_controller.rb"文件中):

def index
  @proposals = Proposal.all
  @count2015 = Proposal.count(:all, :conditions => "creationyear = 2015")
  @count2016 = Proposal.count(:all, :conditions => "creationyear = 2016")
end

以某种方式无法工作,因为它使我在两个变量上都回到了脚手架上的条目总数。

有人知道如何解决这个问题吗?我正在使用Rails v4.2.6。

谢谢!

这里的其他答案很好,但是值得提供一些背景。

自早期版本的Rails以来,在活动记录中使用count的方式发生了变化。您可能在Rails 3或更早的情况下找到了一个例子,其中可以以您尝试的方式指定条件。

在最新版本的导轨中,count可以使用列名来调用,例如

Person.count(:email) # number of person records that have an email address

,但在其他情况下首先创建范围,例如使用where,然后在其上调用count

Proposal.where(creationyear: '2015').count
@count2015 = Proposal.where(creationyear: '2015').count

如果creationyear是字符串,否则没有引号。

为什么不按年将建议分组?

@proposals = Proposal.group(:creationyear).count

@proposals = Proposal.group('creationyear').select('*, COUNT(*) as quantity')

这将使每年发生的查询减少到一个查询。

相关内容

  • 没有找到相关文章

最新更新