我有三个模型:Video
,Tag
和Tagging
。标签通过标签有很多视频。
我已成功将标记添加到标记,其中包含每个标记的视频计数作为返回记录的额外属性:
class Tag
def self.include_video_count
t = Tag.arel_table
v = Video.arel_table
joins(:videos).select([t[Arel.star], v[:id].count.as("video_count")]).group(t[:id])
end
end
Tag.include_video_count.first.video_count
# => "42"
问题是count属性是以字符串而不是整数形式返回的。
是否有一些我遗漏的Arel方法指定了应该返回的值的类型?
答案 0 :(得分:0)
显然它取决于数据库返回的列的类型(这是有道理的!)
例如,Postgres将计数作为字符串返回。
https://github.com/rails/rails/issues/3647
所以......基本上......你好运(就像我一样;)