ruby-on-rails - 查询,无法选择列数

标签 ruby-on-rails ruby activerecord rails-activerecord

Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name')

Build query:
SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags` INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id` GROUP BY quote_tags.tag_id ORDER BY count desc

结果:

[#<Tag id: 401, name: "different">, ... , #<Tag id: 4, name: "family">]

它不为我返回计数列。我怎样才能得到它?

最佳答案

您是否尝试过对返回的 Tag 对象之一调用 count 方法?仅仅因为 inspect 没有提及 count 并不意味着它不存在。 检查输出:

[#<Tag id: 401, name: "different">, ... , #<Tag id: 4, name: "family">]

只会包含 Tag 类知道的内容,而 Tag 只会知道 tags 表中的列:您只有表格中的 idname 就是您所看到的全部内容。

如果你这样做:

tags = Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name')

然后查看计数:

tags.map(&:count)

您将看到您期望的计数数组。

关于ruby-on-rails - 查询,无法选择列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350632/

相关文章:

ruby-on-rails - ActiveRecord:更改并保存模型内的对象状态

ruby - 在不安装 gems 的情况下更新 Gemfile.lock

ruby-on-rails-3 - 在Rails 3中使用数组格式的find_by_sql

sql - 计算嵌套集中某个级别中的节点数

mysql - 对于单个Rails应用程序使用两个不同的数据库(MySQL和Postgres)

ruby-on-rails - 各按惯例

ruby-on-rails - rails 和 rake 有什么区别?

ruby - 通过方法语法调用的运算符方法的优先级

ruby-on-rails - 复杂嵌套 SUM/子选择

ruby - 如何从数据库生成事件记录模型