2

我有三个模型:VideoTagTagging。标签通过标签有很多视频。

我已成功向 Tag 添加了一个范围,其中包括每个标签的视频计数作为返回记录的额外属性:

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 方法来指定值应返回的类型?

4

1 回答 1

0

显然它取决于数据库返回的列的类型(这是有道理的!)

例如,Postgres 将计数作为字符串返回。

https://github.com/rails/rails/issues/3647

所以......基本上......你运气不好(我也是;)

于 2014-04-09T04:10:11.910 回答