Arel将count列作为字符串而不是int返回

时间:2013-07-24 03:25:48

标签: ruby-on-rails activerecord arel

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

我已成功将标记添加到标记,其中包含每个标记的视频计数作为返回记录的额外属性:

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

1 个答案:

答案 0 :(得分:0)

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

例如,

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

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

所以......基本上......你好运(就像我一样;)