【问题标题】:Rails 3.1 - find using count and select asRails 3.1 - 使用计数查找并选择为
【发布时间】:2011-11-08 10:27:42
【问题描述】:

我正在尝试在 rails 中执行以下 sql 语句:

SELECT COUNT(downloads.title) AS total, downloads.title FROM `downloads` WHERE `downloads`.`member_id` = 60 Group by `downloads`.`title`

我在 Rails 中这样写:

Download.where(:member_id => id).select("COUNT(downloads.title) AS total, downloads.title").group(:title)

如果我直接从 sql server 运行查询,则 sql 会正确执行,但如果我运行 activerecord 版本,我只会得到标题。

我认为这可能是因为 attr_accessible 但这似乎没有什么不同。

有什么想法吗?

【问题讨论】:

  • 你可以用to_sql方法检查最终的SQL查询。
  • 谢谢,这是一个方便的方法,但输出的 sql 符合我的预期,但我无法弄清楚为什么它不包括输出对象中的总数

标签: ruby-on-rails activerecord ruby-on-rails-3.1


【解决方案1】:

您是否尝试过在集合对象上调用total 方法?
此信息不包含在使用to_s 方法的对象的输出中,因此您可能只是看不到它,但总价值在那里。

downloads = Download.where(:member_id => id).select("COUNT(downloads.title) AS total, downloads.title").group(:title)
downloads.first.total

【讨论】:

  • 谢谢,完全忘记了 .inspect 不会返回所有字段!
  • 谢谢。这对我很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2012-06-16
  • 1970-01-01
  • 2012-05-28
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多