ruby-on-rails – Rails:find_by_sql和虚拟列
发布时间:2020-12-16 20:00:13 所属栏目:百科 来源:网络整理
导读:我想显示一个包含标签的列表以及每个标签的元素数量(在我的示例中为“任务”). 为此,我在标签模型中创建了以下方法: def self.find_with_count find_by_sql 'SELECT Tag.name,COUNT(Tag.name) AS taskcount FROM tags AS Tag INNER JOIN tags_tasks tt ON t
我想显示一个包含标签的列表以及每个标签的元素数量(在我的示例中为“任务”).
为此,我在标签模型中创建了以下方法: def self.find_with_count find_by_sql 'SELECT Tag.name,COUNT(Tag.name) AS taskcount FROM tags AS Tag INNER JOIN tags_tasks tt ON tt.tag_id = Tag.id INNER JOIN tasks t ON tt.task_id = t.id WHERE t.finished = 0 AND t.deleted = 0 GROUP BY Tag.name ORDER BY Tag.name' end 该方法返回正确的标签名称,但由于某些原因,任务计数不在结果中.结果看起来像 [#<Tag name: "hello">,#<Tag name: "world">] 由于这种方法似乎不起作用,我想知道Rails是如何完成这样的任务的.谢谢! 解决方法
计数在那里,您只能看不到它,因为任务计数不是Rails为该类Task创建的属性,因为它不是可以看到的列.你必须使用属性调用来找到它.
样品: class Tag < ActiveRecord::Base ... def taskcount attributes['taskcount'] end end Tag.find_with_count.each do |t| puts "#{t.name}: #{t.taskcount}" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |