1

对于普通的数据库列,Rails 会根据列类型自动选择匹配的 Ruby 数据类型,即//decimal列最终成为integer//属性。varcharBigDecimalFixnumString

但是如果我使用计算列查询数据库

Model.select(['models.*', 'calculated_int_column']).other_arel_stuff

该属性calculated_int_column始终包含一个String对象,即使我integer在 select 语句中使用了显式强制转换。

我猜这是因为 Rails 使用模式来查找列类型。

我如何告诉 Rails 使用哪种 Ruby 类型来写这个专栏?

先感谢您。

4

1 回答 1

0

不确定这是否是您想要的答案,但您可以覆盖 getter 方法以返回一个整数:

class Model
  def calculated_int_column
    @calculated_int_column = 0 if @calculated_int_column.nil?
    @calculated_int_column.to_i
  end
end
于 2012-04-24T20:02:09.170 回答