RUBY:如何计算数据库列条目

时间:2012-07-06 06:02:02

标签: ruby-on-rails

我是Ruby的新手,我曾尝试过一些在线教程,但有些东西我想检查,因为我似乎无法使它工作而且我现在迷失了。

我已经使用Ruby建立了一个数据库作为注册网站。这是一个简单的单线数据库,我只使用ruby创建的默认应用程序控制器。现在我的问题。

我想计算我的一个数据库列中的所有条目,它只有两个静态条目,(是/否),我希望将YES计为2个条目,NO计为1个条目并显示总计数index.html.erb,这可能吗?

提前致谢

编辑...

表= mydb 专栏=回答

我在控制器中使用了以下几行,但是当我运行应用程序时,我正在进行动态常量分配。

NO_WEIGHT = 1
YES_WEIGHT = 2
yes_count = ModelName.where(:column_name => "YES").count * YES_WEIGHT
no_count = ModelName.where(:column_name => "NO").count * NO_WEIGHT

有了这个错误,我用

替换了这些行
@NO_WEIGHT = 1
@YES_WEIGHT = 2
@yes_count = mydb.where(:answer => "YES").count * @YES_WEIGHT
@no_count = mydb.where(:answer => "NO").count * @NO_WEIGHT

有了这个,我检查了日志,我看到了这个

Select Count(*) from mydb where mydb.answer = 'YES'
Select Count(*) from mydb where mydb.answer = 'NO'

没有预期的“* @YES_WEIGHT”作为乘数。

此外,我想尝试使用以下行在index.html上显示结果:

<p> YES count is <% @yes_count %> </p>

但遗憾的是没有输出。

我只想检查如何将动态常量修复为静态变量,以使我的查询按预期工作和显示。

感谢所有帮助

2 个答案:

答案 0 :(得分:0)

如果你使用ActiveRecord,你需要这样的东西(表是用户,是/否在状态栏中):

Users.find(:all,
 :select => "count(*) as status_count",
 :group => "status"
)

答案 1 :(得分:0)

如果我理解你的问题,可以这样:

NO_WEIGHT = 1
YES_WEIGHT = 2
yes_count = ModelName.where(:column_name => "YES").count * YES_WEIGHT
no_count = ModelName.where(:column_name => "NO").count * NO_WEIGHT