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
表中的列:您只有表格中的 id
和 name
就是您所看到的全部内容。
如果你这样做:
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/